日期:2014-05-20 浏览次数:20756 次
ps:排版的时候除了问题,所以导致目录结构有点移位
不知道是不是csdn的问题,给读者照成不便,请见谅!
在上一节中我们对Java的历史背景以及相关的运行原理进行了学习;
这一节中我们将对Java的基础知识进行学习;
而这些基础知识在C或者其他语言中都是有得,
学过的可以复习一下,没学过的可以学习下
好了,废话不多说
加法:+ | 减法:- | 乘法: * |
除法:/ | 求余:% | 自增:++ |
自减:-- | 加法赋值:+= | 减法赋值:-= |
乘法赋值:*= | 除法赋值:/= | 求余赋值:%= |
①如果除号的前后都是整型,那么结果也为整型 eg:5 / 2 = 2
②求余运算符通常用于整型,当然浮点型也可以,但结果是不准确的,但对精度要求较高时就不要了,可以使用BigDecimal类型
③自增和自减作为前缀还是后缀:
前缀:先自增,后参与运算后缀:先参与运算,后自增
eg:如图,大家来判断一下输出的结果:
输出的结果是:
你算对了没?对付这种自增自减的问题,更重要的是细心,还有一点要注意的是:
自增自减运算符只能对单个变量起作用,表达式和常量是没用的
eg:(a + b)++ 想让相加后的结果+1,但是确是错的,
同样,常量也是不行的,6++,这样也是错的!切记!
逻辑与: & | 逻辑或: | | 逻辑非: ! |
短路与 : && | 短路或 : || | 等于: == |
不等于: != |
a ? b : c;
如果a成立的话,执行b,否则执行c,精简版的if-else
max = a > b ? a : b;
如果a > b,那么max = a;否则 max = b;
:
按位取反:~ | 按位与:& | 按位或:| |
按位异或:^ | 向右移位:>> | 向左移位:<< |
无符号右移:>>> |
Java中可通过Integer类的toBinaryString(int i )方法将十进制数转换为二进制的字符串
①按位取反: ~a = - a -1
②位逻辑运算符:
&操作数都为1结果为1,否则结果为0 |操作数都为0,结果才为0,否则为1
^操作数相同为0,不同结果为1
③位移运算
左移1位等于乘以2;右移一位等于除以2;再取整,移位溢出的丢弃
无符号右移:和前面两个不同,最高位不是用原来的最高位填充,而是直接用0来填充最高位
在所有的运算符中,圆括号的优先级最高!
如果满足以下两个条件就会进行自动转换:
①转换后的类型比原来的类型大 ②转换前后类型相互兼容
eg:如果两个byte变量相加后,结果是int类型哦,这个是面试的一个考点来的!
就是在前面加个(数据类型)
eg:a= (float) b
这里要注意精度损失的问题
由数字,下划线,$,英文字母构成,且不能以数字开头
不能变的量就是常量
声明格式: final int PRICE = 3;
定义以后就不能改变PRICE的值了,不然会报错,这里要注意的是常量通常都是大写的
就是可以改变的量,变量的命名通常是,首字母小写,第二个单词起大写
eg:priceOfApple
赋值:
太简单了,不讲
初始化:
注意:对于局部变量,当我们想要使用一个变量的时候,要先对他进行初始化,不然编译器会报错的!!!
而例外的情况:实例变量与累变量,编译器会自动地对他们进行初始化
默认:boolean变量 为false,char默认为'\000'
Java中用String类来存储,处理字符串
System.out.println("Hello"); ""括着的是字符串常量
String str = "Hello" ; 定义一个字符串变量
String str = "abc" str = "cba"
那么string对象是否会发生改变呢?
答案肯定是不会,str只是作为一个引用指向一个字符串存储的内存空间;
就是str存储的是只是一个地址!
当我们定义字符串变量时,系统会先对String常量池中的字符串进行匹配
有的话直接使用已经存在的字符串常量,否则在池中再生成一个!
在进行if语句的嵌套时要牢记一点:
else语句总是和其最近if语句相互搭配,当然前提是他们在同一块中
这里要注意的就是记得给每个case写个break,不然.....你试试就知道了
后者与前者的区别就是无论条件是否成立,后者至少执行一次
由三部分组成,初始化,条件判断,迭代
比较常用,这里就不说了,循环嵌套的时候小心点,注意一定要有条件跳出循环,不然死循环,呵呵
break语句:可以直接终止循环,多层嵌套时,跳出一层循环
continue语句:直接停止本次循环的剩余语句,直接进行下一次循环
return语句:只能用在方法(函数)中,结束当前的方法
数的集合,将一坨相同数据类型的数据存放到一个集合中
而这个集合名叫数组,我们可以通过数组名+下标来访问数组中的每一个元素
这里要区分:
数组名变量存在栈中,而指向内存堆中连续的内存空间,这个连续的内存空间是存储数组元素的
int[] array = new int[3]; //定义一个容量为3的整型数组
可在定义的时候初始化,或者利用for循环进行赋初值
①获取数组的长度:array.length;
②数组复制:两个长度,类型相同的数组,可以直接用数组名赋值 eg: array1 = array2
③可以把main()的参数拿来用,args[];在命令行下可以在java ... 后添加参数
和其他语言不同,Java的多数组的列数可以是数目不同的!
使用代码如下:
public class arrayTest { public static void main(String[] args) { //创建一个二维数组 //①直接一开始赋初值 int[][] array1 = { {1,2,3}, {4,5,6}, {7,8,9} }; //②创建规则的二维数组 5*3的 int [][] array2 = new int[5][3]; //③创建不规则的二维数组:3行,列数依次为:3,2,1 int [][] array3 = new int[3][]; //指定每一行的列数 array3[0]= new int[3]; array3[1]= new int[2]; array3[2]= new int[1]; //都是一样的,只需要把array3换一下即可 //对二维数组进行初始化,只需要通过两个for循环即可 for(int i = 0;i < array3.length;i++) { for(int j = 0;j < array3[i].length;j++) { //赋值 } } } }