Java中的运算符与表达式
一、背景由来:在程序设计过程中经常要进行各种运算,从而达到改变变量值的目的。要实现运算,就要使用运算符。它是用来表示某种运算的符号,用来指明对操作数所进行运算。
二、基本运算符的分类:
(1)、算术运算符:+、-、*、/、%、++、--
(2)、关系运算符:>、<、>=、<=、==、!=
(3)、逻辑运算符:!,&&,||,&、|
(4)、位运算符:>>、<<、>>>、&、|、^、~
(5)、赋值运算符:=、扩展运算符,如+=、/=等
(6)、条件运算符:?:
(7)、其他运算符:包括分量运算符、下标运算符[]、实例运算符 instanceof、内存分配运算符new、强制转换运算符(类型)、方法调用运算符()
总结:其实上面的运算符,在编程中可能经常见,但可能不知道具体是属于什么的运算符,只有算术运算符和关系运算符可能会在运算符学习的时候,重点的涉及,其他的在编程的时候自然地使用了。
三、算术运算符的一些总结
1、作用与整型和浮点型,用来完成相应的运算,有一元运算,就是只有一个操作数参加运算,还有二元的运算,就是有两个操作数的运算。
2、加、减、乘法跟实数的没有什么区别,除法就有点不一样了,要根据具体的数据类型来判断,两个整数就取整数的部分,不要小数的部分。除数也是不能为零。
3、求模运算(%),如5%2=1;就是求余数。若数据是浮点型的值也是有小数点的,都是单精度的,值就是单精度的,若数据中存在双精度的话,则得到的值就是双精度的。
4、一元运算:如+a、-a分别是代表是整数,负数,++,--就不需要阐述了。这里重点可能就是(i++、++i)了,我也是一脸懵逼,但是原理是知道的,就是做题时老错。
如int i = 10;然后 int m; m=i++;//先m=i;在i=i+1;所以m=10;i=11;减法的是原理是类似的
如int i = 10;然后 int m; m=++i;//先i=i+1;在m=i;所以m=11;i=11;减法的是原理是类似的
四、关系运算符和逻辑运算符的一些总结
1、关系运算符的返回值都是boolean的值,就是两数比较返回true or false
2、但是浮点数之间不会用“==”,因为浮点数之间难免会有微小的精度差异,进行比较会没有意义。
3、逻辑与(&)、逻辑或(|)、逻辑非(!),简洁与(&&),简洁或(||),判断true or false的值跟数学中原理是相同的。
4、(^)异或,如a^b,判断时,比较少见。它是两个操作数同真或同假是,返回值才会是false。
5、简洁运算与非简洁运算的区别:非简洁运算就是需要判断左右两个表达式,才会得出返回值,但是对于简洁与运算时,若知道左边的表达式为false时就不会管右边的表达式,返回值直接就是false了,类似地简洁或,判断到左边的表达式为true时,就是不管右边的表达式了,返回值就是true了。所以为了程序的执行性能或者是效率,通常用简洁运算的时候就根据实际来放表达式的位置。
6、Java基础笔试面试的时候,可能会考到“&“与“&&“的区别,有兴趣的话可以记一下。
五、赋值运算和位运算就不做详细的介绍和总结了,可以通过百度,或者相关的书籍来获取相关的知识来解决相关的问题。
六、扩展赋值运算符和条件运算符
1、就是为了简写运算符的一些写法,运算的原理没有变,如a+=b;等同于a=a+b;其他的a-=b——>a=a-b;a*=b;a/=b;a%=b;a&=b等等是一样的。
2、条件运算符:表达式为:表达式1 ?: 表达式2 : 表达式3;
如:int a=1,b=2,max; max = a>b?a:b; 这样语句求两数之间的最大值
七、运算符的优先级、结合型问题。
1、优先级:大体来说从高到低就是:一元运算符、算术运算符、关系运算符和逻辑运算符、赋值运算符。
2、结合性:同级的运算符大都是按照从左到右的方向进行运算的,而赋值运算、一元运算等则是从右到左的。