Java运算符
自增自减
//++ -- 自增,自减 一元运算符
int a = 3;
int b = a++;//先给b赋值,再自增
//a++ : a = a + 1
System.out.println(a);//a=4
int c = ++a;//先自增,再赋值
System.out.println(a);//5
System.out.println(b);//3
System.out.println(c);//5
由于++的优先级比=要高,又都是右结合性,所以先执行++,针对b=a++这个语句来讲,先执行a++,创造一个临时变量;后执行=,将这个临时变量的值给b,最后a再进行自加
整型加减
long a = 123456789L;
int b = 123;
short c = 12;
byte d = 1;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
运算中有long则结果为long类型,没有long则为int(整型加减)
幂运算
double pow = Math.pow(2, 3);
幂运算 , 很多运算要使用工具类来操作
短路运算
//短路运算:System.out.println(a&&b);中若变成System.out.println(b&&a);由于b是false,所以在判断时不计算a了
//证明短路情况存在
int c = 5;
boolean d = (c<4)&&(c++<4);
//
//
System.out.println(d);//false
System.out.println(c);//5
- 如果存在短路现象,由于c=5,一定大于4,所以第一个括号内就为假,那么后续就不执行了,所以可以先输出d,后输出c查看结果
- 如果d为false,c为5,则证明短路现象存在,因为c没有参与后续自加运算
位运算符
/*
A = 0011 0000
B = 0011 0110
A与B A&B = 0011 0000 AB上下每位数字比较,全为1则结果为1
A或B A|B = 0011 0110 AB每位比较,都是0则为0,只要有1个是1,则结果为1
A异或B A^B = 0000 0110 相同为0,不同为1
对B取反 ~B = 1100 1001 对B每位取反
*/
2*8 怎么运算最快? 2*2*2*2*2
位计算效率极高,直接跟底层打交道
<<左移 *2
>>右移 /2
0000 0000 0
0000 0001 1
0000 0010 2
0000 0011 3
0000 0100 4
0000 1000 8
0001 0000 16
*/
计算机组成原理
字符串连接符
//字符串连接符 +
System.out.println(a+b);
System.out.println(""+a+b);//1020
//只要输出中有string类型,在输出时用+相连,则其余操作数也会转换成string类型并连接起来
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//如果字符串在前面,则拼接;反之则先计算再拼接
证明执行顺序是从左往右的
三元运算符
//x ? y : z
//x == true,则结果为y,否则结果为z
int score = 80;
String type = score<60?"不及格":"及格";
System.out.println(type);

运算符优先级表

浙公网安备 33010602011771号