3.赋值运算符:
基础赋值运算符:=是唯一一个自右向左运算的符号
扩展赋值运算符:(基础赋值运算符和算术运算符组成)
-=、+=、✳=、/=、%=
推荐使用扩展赋值运算符,在编译期间,满足条件的代码会自动成为扩展赋值运算符;其优点是:
1.自动做强制类型转换
2.提高执行效率
例如: short s1 = 1; s1 = (short)(s1+1); System.out.println(s1); s1++; System.out.println(s1); s1+=1; System.out.println(s1);
4.比较 | 关系 运算符:( 比较运算符 的 运算结果为boolean类型 )
< > <= >= (操作数只能为数值型的操作数)
= = != (操作数可以为基本数据类型,或者引用数据类型)
//练习 double d=10/3; //3.0 int a=10/3; //3 System.out.println(a==d); //true System.out.println(a); //3 System.out.println(d); //3.0 d=10/3.0; //3.333 a=10/3; //3 System.out.println(a==d); //false System.out.println(a); //3 System.out.println(d); //3.333 System.out.println("hello"!="hello"); //false
5.逻辑运算符:(操作数的值都为boolean类型)
&(与):两边都为true,结果为true,一个为false就是false
| (或):一个为true就是true,两个都是false才是false
!(反):取反运算
^(异或):相同为false,不同为true
短路运算符:(操作数只能为整型、浮点型、字符型)如果第一个操作数的结果就能决定最终的结果,第二个操作数不再执行。
&&(短路与):两边都是true,结果为true,一个为false就是false
| | (短路或):一个为true就是true;两个都是false才是false
建议:使用短路运算符代替&和 |
System.out.println("----------&-------------"); System.out.println(true&false); //false System.out.println(true&true); //true System.out.println(false&true); //false System.out.println(false&false); //false System.out.println("----------|-------------"); System.out.println(true|false); //true System.out.println(true|true); //true System.out.println(false|true); //true System.out.println(false|false); //false System.out.println("----------!-------------"); System.out.println(!false); //true System.out.println(!true); //false System.out.println("----------^-------------"); System.out.println(true^false); //true System.out.println(true^true); //false System.out.println(false^true); //true System.out.println(false^false); //false System.out.println("----------&&-------------"); System.out.println(true&&false); //false System.out.println(true&&true); //true System.out.println(false&&true); //false System.out.println(false&&false); //false System.out.println(false&&5/0==0); //false System.out.println(false&5/0==0); //false
6.条件运算符:
条件表达式 ?值1:值2;
a > b ? a : b ;
执行流程:
1.计算条件表达式(要求其值为boolean类型的表达式),得到一个boolean结果
2.如果结果为true,取值1
3.如果结果为false,取值2
public class Tiaojian{ public static void main(String[] args){ //判断一个人的分数 int score = 80; int x = -100; String type = score < 60 ? "不及格" : "及格"; int flag = x > 0 ? 1 : (x == 0 ? 0 : -1); System.out.println("type= " + type); System.out.println("flag= "+ flag); //判断三个数字的大小 int a=23; int b=12; int c=8; int m= a>b?a:b; int Max=m>c?m:c; System.out.println(m); System.out.println(Max); /** //定义3个变量,获取3个变量中的最大数输出 int c = 13; //1) max = a>b?a:b; max = max>c?max:c; System.out.println(max); //2) max = a>b && a>c?a:b>c?b:c; System.out.println(max); */ } }
7.位运算符:(了解)(1表示true,0表示false)
将操作数转换为二进制,然后对二进制的数据进行指定规则的运算,最终将结果转为十进制。
&(按位与):一个为0就是0,两个都为1才是1
| (按位或):一个为1就是1,两个为0才是0
^ (按位异或) :相同为0,不同为1
8.位移运算符:
<< 左移运算符
将第一个操作数转换为二进制,向左移动第二个操作数的位数,空位补0,最终二进制的 结果转为十进制。
规律:a << b ==> a * 2^b ;
>> 右移运算符
将第一个操作数转换为二进制,向右移动第二个操作数的位数,移出小数点的位数忽 略,剩余的二进制数据转为十进制
规律:a >> b ==> a / 2^b ;
public class Weiyi{ public static void main(String[] args){ int a=4;//4 int b=5;//3 boolean x = a < b ? ++a * 2 > b || a > b : a < b; System.out.println(x);//true(a=) f System.out.println('a'<<3); System.out.println('中'<<3); //System.out.println(false<<3); //System.out.println("中国"<<3);二元运算符"<<"不支持字符串 } }
9.运算符优先级 :
@ 单目 <算数 <位 <关系 < 逻辑 <三目 后赋值
@ &&优先级高于| |,先执行&&,后执行| |
@ 条件运算符具有自右向左的结合性
public class Operator{ public static void main(Strring[] arg){ int a = 2; int b = 5; boolean x = a < b ? ++a * 2 > b || a > b : a < b; System.out.println(x); //True System.out.println(false && true || true); //True System.out.println(true || true && false); //True } }