算数运算符
+ 正号 +3 3
- 负号 b=4;-b -4
+ 加 5+5 10
- 减 6-4 2
* 乘 34 12
/ 除 5/5 1
% 取模(取余) 7%5 2
++ 自增(前):先运算后取模 a=2;b=++a a=3;b=3
++ 自增(后):先取值后运算 a=2;b=a++ a=3;b=2
— 自减(前):先运算后取值 a=2;b=—a a=1;b=1
— 自减(后):先取值后运算 a=2;b=a— a=1;b=2
*+ 字符串连接 “he”+”llo” “hello”
(只能用于string与string或string与其他符号之间)
强调:
除号/:int num1=12;
int num2=5;
int result1=num1/num2;
System.out.println(result1); 结果为2
double result2=num1/(num2+0.0);
System.out.print(result2); 结果为2.4
取余运算%:结果的符号与被模数的符号相同
开发中,经常使用%来判断能否被除尽的情况
int m1=12;
int n1=5;
System.out.println(m1%n1); 结果为2
int m2=-12;
int n2=5;
System.out.println(m2%n2); 结果为-2
int m3=12;
int n3=-5;
System.out.println(m3%n3); 结果为2
int m4=-12;
int n4=-5;
System.out.prinln(m4%n4); 结果为-2
(前)++:先自增1,后运算
int a1=10;
int b1=++a1;
System.out.println(“a1=”+a1+”,b1=”+b1); 输出结果a1=11,b1=11
(后)++:先运算,后自增1
int a2=10;
int b2=a2++;
System.out.println(“a2=”+a2+”,b2=”+b2); 输出结果a2=11,b2=10
赋值运算符
符号:=
注:1.当“=”两侧数据类型不一致时,可以使用自动类型转换或使用强制类型转换原则进行处理
2.支持连续赋值
i1=j1=10;
int i2=10,j2=20;
扩展赋值运算符:+=,-=,/=,%=
int num1=10;
num1+=2; 不会改变变量本身的数据类型
System.out.println(num1); 结果为12
实现+1的操作有三种方法:
1.num=num+1;
2.num+=1;(推荐)
3.num++;(最推荐)
比较运算符
== != > < >= <== instanceof
说明:
1.比较运算符的结果是boolean类型
2.区分==和=
3.> < >= <=只能使用在数值类型的数据之间
4.==和!=不仅可以用在数值类型数据之间,还可以使用在其他引用变量类型之间
例:
int i=10;
int j=20;
System.out.println(i==j); 结果为false
System.out.println(i=j); 结果为20
逻辑运算符
说明:逻辑运算符操作都是boolean类型变量,且结果都为boolean型
区分&与&&
相同点:1.&与&&的运算结果相同
2.当符号左边是true时,二者都会执行符号右边的运算
不同点:当符号左边是false时,&继续执行符号右边的运算,&&不再执行
推荐使用&&
区分|与||
相同点:1.|与||的运算结果相同
2.当符号左边是false时,二者都会执行符号右边的运算
不同点:当符号左边是true时,|继续执行符号右边运算,而||不执行
推荐使用||
优先级是& > | > && > ||。
位运算符
位运算符都是整型的数据
<<:在一定范围内,每向左移1位,相当于2
>>:在一定范围内,每向右移1位,相当于/2,当数值为正数(开头为零),移几位添几个零,当数值为负数(开头为1),移几位添几个1
>>>:向右移,不论正负号,每移一位/2
**最高效实现28
2<<3或8>>1
注意:m=K^n=(m^n)^n**
数值交换
定义临时变量的方式
int temp=num1;
num1=num2;
num2=temp;
三元运算符
结构:(条件表达式)?表达式1:表达式2
例:int m=12;
int n=5;
int max=(m>n)?m:n;
System.out.println(max); 输出结果为12
说明:1.条件结果表达式的结果为boolean类型
2.如果条件表达式为true,则执行表达式1
如果条件表达式为false,则执行表达式2
3.表达式1和表达式2要求是一致的
4.三元运算符可以嵌套使用
5.可以用三元运算符的地方,都可以改写为if-else
但用if-else的地方,不一定可以改写为三元运算符
例:int m=12; if(m>n){
int n=5; System.out.println(m);
int max=(m>n)?m:n; }else{
System.out.println(max); System.out.println(n);
}
6.如果既可以用三元运算符也可以用if-else,尽量使用三元运算符(简洁,效率高)
获取三个数的最大值
int n1=12;
int n2=30;
int n3=-40;
int max1=(n1>n2)?n1:n2;
int max2=(max1>n3)?max1:n3;
System.out.println(max2);
运算符的优先级
总结一句话:想让谁先运算,就在此位置加上()