首先是算数运算符包括二元运算符,自增自减,一元运算符。
整数运算需要注意:
1、如果两个操作数有一个为long,则结果也为long。
2、没有long时结果为int,即使操作数全为short,byte等
浮点运算需要注意:
1、如果两个操作数有一个操作数为double,则结果为double。
2、如果两个操作数均为float,则结果为float。
取余运算需要注意:
取余符号与左边操作数符号相同。
赋值运算符与扩展赋值运算符:比如=、+=、*=……
测试算数运算符:
byte a =2;
int a2 =3; //a2+a结果为int类
long a3 =4; //a3+a2为long类型
float b =3.14f; //b+3.14为double类,有一个为double则结果为double
System.out.println(9%2);
System.out.println(-9%2); //余数符号只与左边操作数相同
//测试自增自减
int z=3;
int z1=z++; //先赋值再增加
System.out.println("z="+z+"\nz1="+z1);
z=3;
int z2=++z; //先增加再赋值
System.out.println("z2="+z2);
System.out.println("************");//测试赋值运算符与扩展运算符
int d=3;
int d1=4;
d+=d1;
System.out.println("d="+d);
d=3;
d*=d1+2; //相当于d=d*(d1+2)
System.out.println("d="+d);
关系运算符:
关系运算符结果只有布尔值true和false。
特别需要注意:像<,>,<=,>=仅针对数值类型整型、浮点型以及char类型。
测试关系运算符:
int t=3;
System.out.println(t==3);
System.out.println(t!=3);
System.out.println(t<5);
char s='b';
char s1='z';
System.out.println(s<s1);
System.out.println((int)s);//前面加小括号int将s强转为int类
System.out.println(0+s1);//加上0+有一个为int类则自动转为int类,而加上零不影响结果
逻辑运算符:特点为操作布尔值。
短路与和短路非,采用短路的方式,从左到右的计算,如果只通过左边计算能确定该逻辑表达式的值,则后面表达式不再计算,提高效率。
测试逻辑运算符:
boolean a1 =true;
boolean a2 =false;
System.out.println(a1&a2);
System.out.println(a1|a2);
System.out.println(a1^a2);
//短路
boolean a3=1>3&&2<(3/0);
//3/0中零不能做除数,如果短路与继续向后执行则报错,否则则正常执行
System.out.println(a3);
位运算符:
位运算指的是进行二进制位的运算,需要注意,&,|,既是位运算符又是逻辑运算符,如果运算符两边都是布尔型,则是逻辑运算符;如果两边是整数类型,就是位运算符。并且^是位的异或操作不要当成数学中的乘方。
移位符号,左移<< 左移一位相当于乘二
右移>> 右移一位相当于除以二
测试位运算符:
int a =2;
int a1 =3;
System.out.println(a&a1);
System.out.println(a|a1);
System.out.println(a^a1);
System.out.println(~a);
//移位
int a3 =4<<2;
System.out.println(a3);
System.out.println(16>>2);
字符串连接符:字符串不是我们的基本数据类型,而属于对象。
当‘+’有一操作数为字符串时起连接的作用,而不是加。
测试字符串连接符:
String a ="321";
int a1 =3;
int a2 =4;
char a3 ='e';
System.out.println(a+a1);
System.out.println(a1+a2);
System.out.println(a1+a2+a);
System.out.println(a3+a1);
条件运算符:也称三目运算符。
语法格式为:x?y:z
其中x为布尔类型表达式,先计算x的值,如果为true则整个表达式结果为y,否则为z
测试条件运算符:
int s =75;
String t =s>60?"合格":"不合格";
System.out.println(t);
/*三目运算符作用与if,else相似
if(s>60){
System.out.println("合格");
}else{
System.out.println("不合格");
}
*/
最后为运算符的优先级,需要特别注意逻辑非>逻辑与>逻辑或。
表达式中优先使用小括号来组织。