java运算符分为4类:算术运算符,关系运算符,逻辑运算符,位运算符。
1. 算术运算符
java的算术运算符分为一元运算符和二元运算符。算术运算符的操作数必须是数值类型。
(1) 一元运算符
一元运算符只有1个操作数,一元运算符有:正(+),负(-),加1(++)和减1(--)4个。
变量的自加(++),在变量的后面
int a = 3;
int b = a++;
System.out.println(a); //4
System.out.println(b); //3
以上过程,其实分为2步:int a = 3
int b = a; //3
a = a + 1; //4
变量的自加(++),在变量的前面
int a = 3;
int b = ++a;
System.out.println(a); //4
System.out.println(b); //4
以上过程,其实分为2步:
int a = 3;
a = a + 1; //a = 4
int b = a; // b = 4
自减(--)和自加(++)一样,其实只要看运算符在变量的前后位置,在前面变量先加上1,再使用该变量;如果在变量后面,那么先使用该变量,然后该变量再加上1.
(2) 二元运算符
二元运算符有2个操作数,二元运算符有:加(+),减(-),乘(*),除(/)和取模(%)。
注意点,当有若干个变量进行运算时,结果类型取决于这些变量中范围最大的那个变量的类型。
int a = 3;
int b = 2;
double c = a / b; // c=1.0
取模(%)示例
int a = 4;
int b = 3;
int c = a % b;
System.out.println(c); //c = 1
上面例子a为正数,b为正数,c为正数
int a = -4;
int b = 3;
int c = a % b;
System.out.println(c); // c = -1
上面例子a为负数,b为正数,c为负数
int a = 4;
int b = -3;
int c = a % b;
System.out.println(c); // c = 1
上面例子a为正数,b为正数,c为正数
由此可以得出一个规律:取模的结果符号与被除数相同。
2. 关系运算符
java的关系运算符用于比较两个数值之间的大小,其运算的结果是个boolean值。关系运算符有6种:大于(>),小于(=),小于等于(<=)。这边就不再赘述。
3. 逻辑运算符
java的逻辑运算符要求操作数的数据类型为boolean型,其运算结果也为boolean型的。逻辑运算符有逻辑与(&&和&),逻辑或(||和|),逻辑非(!),逻辑异或(^)。
其中:逻辑与&&和&,逻辑或||和|,运算规则基本上相同,其区别是:&和|运算是把逻辑表达式全部计算完;&&和||运算具有短路功能。
逻辑运算符的短路特性
(1) 逻辑与: 若第一个操作数为false,那么结果肯定就是false,那么将不会执行运算符后面的运算了。
int a = 10;
int b = 11;
int c = 12;
int d = 13;
boolean e = (a > b) && ((b = c) < d);
System.out.println(e); // e = false
System.out.println(b); // b = 11
但是如果第一个为true,那么就是会正常执行到运算符后面的运算了,举例(这个只是验证短路特性的)
int a = 10;
int b = 11;
int c = 12;
int d = 13;
boolean e = (a < b) && ((b = c) > d);
System.out.println(e); // e = false
System.out.println(b); // b = 12
(2) 逻辑或: 若第一个操作数为true,那么结果肯定就是true,那么将不会执行运算符后面的运算了。例子与逻辑与的类似,这边不再赘述。
4. 位运算符
java的位运算符是以二进制为单位进行运算的,其操作数和运算结果都是整型。位运算符共有7个: 位与(&),位或(|),位非(~),位异或(^),右移(>>),左移(<>>)。
位运算的位与(&)、位或(|)、位非(~)、位异或(^)与逻辑运算的相应操作的真值表完全相同,其差别只是位运算操作的操作数和运算结果都是二进制整数,而逻辑运算相应操作的操作数和运算结果都是逻辑值。
这边就不举例了,对有计算机基础的同学来说完全没有问题的。有个经典笔试题:
/*
* java中用什么办法实现2×8效率最高
*/
System.out.println(2 << 3); // 16
下一回,复习java基础--流程控制语句。