1.算数运算符
+(加)、-(减)、(乘)、/(除)、%(取模、求余)、++(自增)、–(自减)
注意:
前自增、自减运算符先自增或自减,后运算;
后自增、自减运算符先运算,后自增或自减;
整除、取模运算的符号取决于被除数、被模数的符号,也就是分子;
自增自减不会改变数据类型,如short a=1 a++值为2,而a=a+1 此时不再是short类型,编译出错;
2.赋值运算符
=(赋值)、+=(加等于)、-=(减等于)、=(乘等于)、/=(除等于)、%=(模等于)
注意:
3.比较运算符
(大于)、<(小于)、<=(小于等于)、>=(大于等于)、!=(不等于)
4.逻辑运算符
&(与)、|(或)、!(非)、&&(短路与)、||(短路或)、^(异或)
注意:
短路与&&有一边为false,就终止逻辑判断;
短路或||有一边为tre,就终止逻辑判断;
异或^不同为true,相同为false;
5.位运算符(了解即可)
&(按位与)、|(按位或)、~(取反)、^(按位异或)、<<(左移)、>>(右移)、>>>(无符号右移)
注意:
&化为二进制以此与运算既可,|和^也是如此;
位运算符针对于整数的二进制进行操作,在一定范围内,左移一位相当于乘2的1次幂,以此类推;
同理,在一定范围内,右移一位相当于除2的1次幂,以此类推;
特别地,对于负数的右移运算只需要在对应的符号位补1,其他位补0;
取反操作是指对应二进制包括符号位在内,0变1,1变0;
无符号右移是指不考虑符号,进行运算;
无<<<操作;
扩展:
面试题1:
如何最快速计算8*2?
解答:8<<1 或者 2<<3
面试题2:
public class OperatorTest {
public static void main(String args[])
{
//扩展面试题:输出以下运算结果s的值
boolean x=true;
boolean y=false;
short s=42;
if((s++==42)&&(y=true)) s++;
if((x=false)||(++s==45)) s++;
System.out.println("s="+s);
}
}
6.三元运算符(三目运算符、条件运算符)
格式:
{表达式1}?表达式2:表达式3;
规则:
表达式1和表达式2是同一种类型的变量;
若表达式一结果为true,执行表达式2,;否则执行表达式3;
注意:
三元运算可以嵌套使用;
凡是可以使用三元运算符的语句,都可以替换为if-else语句,反之则不行;
若能使用三元运算符,推荐使用三元运算符。
public class SanYuan {
public static void main(String args[]) {
int x=10;
int y=20;
int z=30;
int max=(x<=y)?y:x; //求两个数的最大值
System.out.println("x,y两个数的最大值是:"+max);
System.out.println("------------------------");
int max1=(max>=z)?max:z; //求三个数的最大值
System.out.println("x,y,z三个数的最大值是:"+max1);
int max2=(((x<=y)?y:x)>=z)?max:z;
System.out.println("x,y,z三个数的最大值是:"+max1);
}
}
7.运算符的优先级
从上到下,优先级依次降低;



