运算符
算术运算符+-*/
赋值运算符= += -=
比较运算符 >
逻辑运算符 & | !
位运算符(用的比较少)
三元运算符
1.算术运算符
+连接运算符:只能使用在string和其他运算符之间
自增不会改变变量的数据类型(理解前加加和后加加)
重难点代码示例:
//除号/
int num1=12;
int num2=5;
int result=num1/num2;
System.out.println(result);//2
//要使12/5得出结果2.4
double result2=(double)num1/num2;
System.out.println(result2);//2.4
double result3=num1/(double)num2;
System.out.println(result3);//2.4
//取余%
int result4=num1%num2;
System.out.println(result4);//2
int num3=-5;
int num4=2;
int result5=num3%num4;
System.out.println(result5);
int num5=10;
int num6=-3;
int result6=num6%num5;
System.out.println(result6);
//对于前++和后++
//前--和后--同理
int num1=20;
int num2=num1++;//先把num的值赋给num2,在++。所以这时num2是20,num1是21
int num3=++num1;//先把num1自增1,在赋给num3,所以这时num3是22,num1是22
System.out.println(num1);//22
System.out.println(num2);//20
System.out.println(num3);//22
以上代码有以下几点结论:
1.对于取余%:结果的符号与被模数的符号相同。开发中常用取模符号判断是否被除尽
2.++和--运算写到变量前后得到的结果不同,具体看上面示例。
2.赋值运算符
//+=不会改变变量本身的数据类型
//num=num+2.0;则会报错
int num=10; num+=2.0; System.out.println(num);//12
3.比较(关系)运算符
两个操作数进行比较,比较后是boolean值
注!!!> < >=
== 和 != 不止可以使用在数值类型数据之间,还可以使用在其他引用类型变量之间(常用!!!)
4.逻辑运算符
& 逻辑与 |逻辑或 !逻辑非 ^逻辑异或(ad相同则为false,ab不同则为true)
两个boolean类型的操作数或表达式进行逻辑比较
逻辑运算符比较的都是布尔型
注意!!!逻辑与&和短路与&&的区别(逻辑或和短路或同理)开发中常用短路与
相同点:1、&和&&的运算结果相同
2、当符号左边是true时,二者都会执行符号右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行符号右边的运算
(直接短路)
int i=5;
// if(i==4&++i==6){
// System.out.println("111");
// System.out.println(i);
// }
// System.out.println("222");
// System.out.println(i);//6
// System.out.println("======");
if(i==4&&++i==6){
System.out.println("111");
System.out.println(i);
}
System.out.println("222");
System.out.println(i);//5
开发中推荐使用短路与和短路或:短路效率高于非短路
5.位运算符(开发中用的比较少)
注意:1表示true 0表示false
与或非 前后都是布尔型则是逻辑运算符
与或非 前后都是数字则是位运算符
1.位运算符操作的都是整型的数据
2.<<:在一定范围内,每项左移一位,相当于在原来的基础上乘以2.
>>:在一定范围内,每项右移一位,相当于在原来的基础上除以2.
而且原来的数为1,即为负数,则最高位补1。符号位不会发生变化。
对于int型数据,若右移或左移32位,则原来的数不变
无符号右移:不论正数还是负数,都补0
将这个整数与15(1111)进行与运算,就可以得出后四位
6.三元运算符
表达式1和表达式2为同种类型
说明:
- 条件表达式结果为true类型
- 三元运算符可以嵌套使用
凡是可以使用三元运算符的位置都可以改写成if else(优先用三元)
算术运算符>关系(比较)运算符>逻辑运算符
最高的优先级 () 最低的优先级 赋值
单目、三目、赋值是右结合
其他的都是左结合
运算符优先级
优先级:
算术运算符>关系(比较)运算符>逻辑运算符
最高的优先级 () 最低的优先级 赋值
单目、三目、赋值是右结合
其他的都是左结合