Java运算符有7种:基本运算符、自增自减运算符、关系运算符、逻辑运算符、扩展赋值运算符、三元运算符、 字符串 拼接符。
1.基本 运算符 包含+ – * / %(取余)
System.out.println(5 % 2)//输出1
System.out.println(1 % 2)//输出1
System.out.println(2 % 3)//输出2
System.out.println(3 % 3)//输出0
2.自增自减运算符:作用于变量。
自增:在变量自身基础上增加1, 自增符号: ++
自减:在变量自身基础上减少1, 自减符号: —
单独元运算时,符号在变量前后都一样,都执行自增自减操作
int a = 5;
a++;//a为6
++a;//a为7
参与运算时(当然包含赋值运算),符号在变量前后是不一样的
符号在前,先自增自减,再参与其他运算
符号在后,先参与其他运算,再自增自减
int a = 2;
int b = 2;
int c = a++;
int d = ++b;
System.out.println(c);
System.out.println(a);
System.out.println(b);
System.out.println(d);
输出结果为
"C:\Program Files\Java\jdk1.8.0_291\bin\java.exe" "-javaagent:E:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\lib\idea_rt.jar=14497:E:\Program Files\JetBrains\IntelliJ IDEA 2021.1.3\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\Java\jdk1.8.0_291\jre\lib\charsets.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\deploy.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\access-bridge-64.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\cldrdata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\dnsns.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jaccess.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\jfxrt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\localedata.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\nashorn.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunec.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunjce_provider.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunmscapi.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\sunpkcs11.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext\zipfs.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\javaws.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jce.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfr.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jfxswt.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\jsse.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\management-agent.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\plugin.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\resources.jar;C:\Program Files\Java\jdk1.8.0_291\jre\lib\rt.jar;E:\JSDVN\JSDVN2210\VN2210\out\production\VN2210" day03.OperationDemo01
2
3
3
3
还有一道经典的面试题目如下:
int a = 1;
a = a++;
System.out.printIn(a);
请问输出a的值如何,正确答案是1。实际上,上文说的符号在前在后,变量先做什么后做什么,只是一个我们分析自增自减运算符结果的方法,是代码运行的大概流程。实际上,是这样的:
int a =1;
a = a++;
/**先将变量的内容赋值给临时变量:temp = a;
再将变量进行自增操作: a = a++;
将临时变量赋值给a: a = temp;
*/
实际上,和之前的代码:int c = a++; c的值仍然是a,是一样,与我们总结的两条规则完全一致,是不冲突的。
同理:
int b = 1;
b = ++b;
/**符号在前:
* (1)将b变量进行自增操作 b = b+1;
* (2)将b赋值给临时变量 temp = b;
* (3)将临时变量赋值给b b = temp;
*/
System.out.println(b);//2
3.关系运算符
关系运算符指的是: 大于 > 小于 < 大于等于 >= 小于等于<= 等于== 不等于!=
关系运算符的结果一定的boolean 要么成立 true 要么 不成立 false
int a =100;
int b = 99;
boolean result1 = a > b;
System.out.println(result1);//输出true
boolean result2 = a < ++b;
System.out.println(result2);//输出false