二元运算符
二元运算符有+、-、*、/、%等
// 二元运算符 + - * / %
long a = 123123123132123L;
int b = 123;
short c = 10;
byte d = 8;
System.out.println(a+b+c+d); //long
System.out.println(b+c+d); // int
System.out.println(c+d); // short
System.out.println((double) c+d); // double
需要注意的是不同类型的数据相加后,结果的数据类型是什么
逻辑运算符
与&& 或|| 非!
// 逻辑运算符 与and 或or 非
boolean a = true;
boolean b = false;
System.out.println("a && b:" + (a && b)); //a && b:false
System.out.println("a || b:" + (a || b)); //a || b:true
System.out.println("!(a && b):" + !(a && b)); //!(a && b):true
需要注意的是短路运算
// 短路运算
int c = 5;
boolean d = (c < 4) && (c++ < 4);
System.out.println(d); // false
System.out.println(c); // 5 c<4时false,与运算短路,c++<4未执行
与运算时,需要两者皆为true结果才为true,因此当第一个判断为false时,便不需要进行借来下的判断,这就是短路运算
本例中,c=5>4,所以第一个判断的结果值为false,此时便不需要进行第二个判断,因此c++的自增操作并没有执行,c的结果还是5
位运算
位运算是对每个位进行逻辑运算,有与&,或|,非~,亦或^
/*
位运算:
A = 0011 1100
B = 0000 1101
A&B 0000 1100
A|B 0011 1101
A^B 0011 0001 亦或 相同为0不同为1
~B 1111 0010
2*8 = 16
效率极高!!
<< 左移 *2
>> 右移 /2
0000 0000 0
0000 0001 1
0000 0010 2
*/
重点:如何以最快的速度进行2的倍数的乘法?位的左右移
效率极高
当进行左移时,相当于乘以2
当进行右移时,相当于除以2
字符串运算
int e = 10;
int f = 20;
System.out.println("" + e + f); //1020
System.out.println(e + f + ""); //30
注意:
“”+e+f是直接进行的字符串的拼接操作
e+f+"“是先对e和f进行求和后转换为字符串与”"拼接的结果
三元运算符
//如果x==true 则结果为y 否则为z
int score = 80;
String type = score < 60 ? "不及格" : "及格";
System.out.println(type);
三元运算符可以代替简单的if-else操作