1. +,-,*,/,%属于二元运算符。%是取模运算符,就是我们常说的求余数操作。
2. 算术运算符中++(自增),--(自减)属于一元运算符。
3.二元运算符的运算规则:
整数运算:
如果两个操作数有一个为 long, 则结果也为 long。
没有 long 时,结果为 int。即使操作数全为 short,byte,结果也是 int。
浮点运算:
如果两个操作数有一个为 double,则结果为 double。
只有两个操作数都是 float,则结果才为 float。
取模运算:
其操作数可以为浮点数,一般使用整数,结果是“余数”,“余数”符号和左边操
4.【示例】一元运算符++与--
int a = 3;
int b = a++; //执行完后,b=3。先给b赋值,再自增。
System.out.println("a="+a+"\nb="+b);
a = 3;
b = ++a; //执行完后,b=4。a先自增,再给b赋值
System.out.println("a="+a+"\nb="+b);
5.扩展运算符
int a=3;
int b=4;
a+=b;//相当于a=a+b;
System.out.println("a="+a+"\nb="+b);
a=3;
a*=b+3;//相当于a=a*(b+3)
System.out.println("a="+a+"\nb="+b);
5.关系运算符
关系运算符用来进行比较运算。关系运算的结果是布尔值:true/false;
=是赋值运算符,而真正的判断两个操作数是否相等的运算符是==。
==、!= 是所有(基本和引用)数据类型都可以使用。
> 、>=、 <、 <= 仅针对数值类型(byte/short/int/long,float/double 以及
char)
6.逻辑运算符
逻辑运算的操作数和运算结果都是 boolean 值。
短路与和逻辑与
//1>2 的结果为 false,那么整个表达式的结果即为 false,将不再计算 2>(3/0)
boolean c = 1>2 && 2>(3/0);
System.out.println(c);
//1>2 的结果为 false,那么整个表达式的结果即为 false,还要计算 2>(3/0),0 不能做除
数,//会输出异常信息
boolean d = 1>2 & 2>(3/0);
System.out.println(d);
7.位运算符
短路与和逻辑与
//1>2 的结果为 false,那么整个表达式的结果即为 false,将不再计算 2>(3/0)
boolean c = 1>2 && 2>(3/0);
System.out.println(c);
//1>2 的结果为 false,那么整个表达式的结果即为 false,还要计算 2>(3/0),0 不能做除
数,//会输出异常信息
boolean d = 1>2 & 2>(3/0);
System.out.println(d);
注意点:&和|既是逻辑运算符,也是位运算符。如果两侧操作数都是 boolean 类型,就作为逻辑
运算符。如果两侧的操作数是整数类型,就是位运算符。
不要把“^”当做数学运算“乘方”,是“位的异或”操作。
8.字符串连接符
“+”运算符两侧的操作数中只要有一个是字符串(String)类型,系统会自动将另一个操作
数转换为字符串然后再进行连接。
连接符“+”
int a=12;
System.out.println("a="+a);//输出结果: a=12
9.条件运算符
String type = score<60?"不及格":"及格"
x 为 boolean 类型表达式,先计算 x 的值,若为 true,则整个运算的结果为表达式 y 的
值,否则整个运算结果为表达式 z 的值。
案例:条件运算符
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