[18/11/14] 运算符
运算符分类

1、算术运算符(a++和++a的区别)
整数运算:
1. 如果两个操作数有一个为Long, 则结果也为long。 2. 没有long时,结果为int。即使操作数全为short,byte,结果也是int。
浮点运算:
3. 如果两个操作数有一个为double,则结果为double。 4. 只有两个操作数都是float,则结果才为float。
取模运算:
1.其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操作数相同,如:7%3=1,-7%3=-1,7%-3=1。
代码示例:
/** 区分++a和a++ ;取余 */ public class Test { public static void main(String[] args) { //测试取余(即取模) 余数的符号和左边的操作数的符号一致 System.out.println(7%4);//结果为 3 System.out.println(-7%4);//结果为 -3 ; System.out.println(7%-4);//结果为3 //测试++a和a++ 结果都是a自增1,但有区别 int a=2; int b=a++; //a++:是a(值为2)先赋值给b,即b=2,然后a自增1,a=3 即先赋值(给b)后自增 System.out.println("a= "+a+'\t'+"b= "+b); // 结果 a= 3 b= 2 int a1=2; int c=++a1;//++a 是先a1先自增1(即a1变成3)后,再把a1的值赋值给c 即先自增后赋值(给c) System.out.println("a1= "+a1+'\t'+"c= "+c); //结果 a1=3 c=3 } }
2、赋值运算符
![]()
特别注意: a*=b+3 相当于a=a*(b+3) 优先级的问题
3、关系运算符
如何判断?代码输出的看是true 还是 false
如:int a=3;
System.out.println(a<5); // 输出为true
![]()
4、逻辑运算符
用来操作布尔值
![]()
1 public class Test_1116 2 { //逻辑与 与 短路与 的区别 3 public static void main(String[] args) 4 { 5 6 boolean a=1>2 & 2<(3/0); //逻辑与 左边肯定为false 结果也肯定为false ,但对于逻辑与(普通与)他会继续计算后边,而后边 7 // 有错误(0不能为除数),会报异常。 8 boolean b=1>2 && 2<(3/0); //短路与 左边肯定为false 结果也肯定为false ,但是计算完左边之后不会计算后边,就是后边有错 9 //也没关系,不会报错,因为压根不会计算。短路与:只要一个为 假,【立即】 输出 假 10 System.out.println(a); 11 System.out.println(b); 12 13 14 } 15 }
5、位运算符
![]()
如: int c=3<<2 //表示3左移2位,相当于3*2*2=12 (计算最快的一种方法) 3: 0011 ,2个1左移2位变成 1100 (十进制:12)
6、字符串连接符 (+)
1 public class Test_1114_06 2 3 { 4 public static void main(String[] args) 5 { 6 String a="3"; 7 int b=4; 8 int c=5; 9 char d='a'; 10 11 //字符串连接符 + 何时做加法运算,何时只做单纯连接?两边都是数字做加法运算。两边有字符串的做连接符 12 System.out.println(a+b+c); //从左到右,a为字符串,+是连接符 输出:345 (为字符串) 13 System.out.println(b+c+a); //从左到右,b和c都是数字得到9,然后a为字符串,此时+作为连接符 输出:93(字符串) 14 System.out.println(d+4); // d是字符(非字符串,用单引号表示) a在Ascll码中为数字97 此时+为加法符,得到101 15 } 16 }
7、条件运算符
如: int a=80;
String type=a<60? "不及格":“及格” // 相当于简单if语句,如果a<60 输出冒号前面的字符串 “不及格” ,反之输出冒号后边的字符串“及格”
8、运算符的优先级
【注意】逻辑非>逻辑与>逻辑或 即a|| b&&c 等价于 a || (b&&c) 实际中,为防止错误,可使用括号






浙公网安备 33010602011771号