Java语言支持如下运算符:
算术运算符:
算数运算符包括:
+
加法运算,字符串连接运算
-
减法运算
*
乘法运算
/
除法运算
%
取模运算,两个数字相除取余数
++ --
自增自减运算
赋值运算符:=
关系运算符:
比较运算符包括
==
比较符号两边数据是否相等,相等结果是true。
<
比较符号左边的数据是否小于右边的数据,如果小于结果是true。
>
比较符号左边的数据是否大于右边的数据,如果大于结果是true。
<=
比较符号左边的数据是否小于或者等于右边的数据,如果小于结果是true。
>=
比较符号左边的数据是否大于或者等于右边的数据,如果小于结果是true。
!=
不等于符号 ,如果符号两边的数据不相等,结果是true。
Instanceof
逻辑运算符:
逻辑运算符包括:
&& 短路与
1. 两边都是true,结果是true 2. 一边是false,结果是false 短路特点:符号左边是false,右边不再运算
||短路或
1. 两边都是false,结果是false 2. 一边是true,结果是true 短路特点: 符号左边是true,右边不再运算
! 取反
1. ! true 结果是false 2. ! false结果是true
位运算符:&,|,^,~,>>,<>>(了解!!!)
条件运算符:?
扩展赋值运算符:+==,-=,*=,/=
算术运算符
自增运算符:+``+
自减运算符:--
以上两种运算符可以称为一元运算符(因为他们可以一个数进行加减的变化)
先++/--:执行代码前,先自增,再赋值。
后++/--:先赋值,代码执行后,再自增。
public static void main(String[] args) {
int a=3;
int b=a++;
//执行这行代码后,先给b赋值,再自增。
System.out.println(a);//4
int c=++a;
//执行这行代码前,先自增,再给b赋值。
System.out.println(a);
//a=5
System.out.println(b);
//b=3
System.out.println(c);
//c=5
}
扩展:很多运算,我们都会使用一些工具类来操作。
double pow = Math.pow(2,3);
//Math.pow 幂运算
System.out.println(pow);//8 2^3
注意:
再多个操作中,有一个数为比int大的数据类型,则数据结果就为改类型,如果没有比int打的数据类型大的数,结果都为int.
小建议:当整数相除的时候,建议把其中一个整数转换成double类型
public static void main(String[] args) {
long a=123456789L;
int b=123;
short c=10;
byte d=8;
System.out.println(a+b+c+d);//long
System.out.println(b+c+d);//int
System.out.println(c+d);//int
}
关系运算符
关系运算符的结果为:false,true 是一个布尔值
public static void main(String[] args) {
//关系运算符返回的结果:正确,错误 布尔值
int a=10;
int b=20;
int c=20;
System.out.println(a>b);//fasle
System.out.println(a
System.out.println(b==c);//rue
}
逻辑运算符
&&(与),||(或),!(非:取反)
逻辑与运算&&:两个变量都为真,结果才为true
逻辑或运算||:两个变量其中一个为真,则结果才为真
!取反:结果如果是真,则为假,如果是假则为真
public static void main(String[] args) {
boolean a=true;
boolean b=false;
System.out.println("a&&b:"+(a&&b));
System.out.println("a==b:"+(a==b));
System.out.println("!(a&&b):"+!(a&&b));
}
注意事项
与“&&”和或“||”有短路效果:如果根据左边已经可以判断出最终结果,那么右边的代码将不会执行
逻辑运算符只能用于boolean值。
与、或需要左右各一个布尔值,但是取反只要有一个的一个布尔值即可。
与、或、两种运算符,如果多个条件,可以连续写。
int c=5;
boolean d=(c<4)&&(c++<4);
System.out.println(d);//false
System.out.println(c);//5
位运算符:
&:需要都为1结果才是1,否则就为0
|:有一个为1结果就是1,其他时候为0
^:相同为0,不相同为1
public static void main(String[] args) {
/*A=0011 1100;
B=0000 1101;
A&B=0000 1100
A|B=0011 1101;
A^B(异或)=0011 0001;
~B(取反)=1111 0010
*/
}
面试题:
2*8怎么运算最快
答:int a=2<<3
>>左移 /2
<
扩展赋值运算符
不建议使用
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b;
a-=b;//a=a-b;
System.out.println(a);
}
扩展:
字符串连接符:+
在加号的两侧只要出现了String类型,他就会其他都转换成String再进行连接
如果String是在前面,后面的会拼接,
如果String在后面,前面的就不会进行拼接,该干嘛干嘛
面试题
System.out.println(a+b+"");和System.out.println(""+a+b);有什么区别?
public static void main(String[] args) {
int a=10;
int b=20;
a+=b;//a=a+b;
a-=b;//a=a-b;
System.out.println(a);
System.out.println("=====");
System.out.println(a+b);
System.out.println(""+a+b);//1020
System.out.println(a+b+"");//30
//1.在加号的两侧只要出现了String类型,他就会其他都转换成String再进行连接
//2.如果String是在前面,后面的会拼接,
// 如果String在后面,前面的就不会进行拼接,该干嘛干嘛
}
三元运算符
三元运算符格式:
int i = (1==2 ? 100 : 200);
数据类型 变量名 = 布尔表达式? true: flase
三元运算符计算方式:
布尔类型表达式结果是true,三元运算符整体结果为结果1,赋值给变量。
布尔类型表达式结果是false,三元运算符整体结果为结果2,赋值给变量。
public static void main(String[] args) {
int i = (1==2 ? 100 : 200);
System.out.println(i);//200
int j = (3<=4 ? 500 : 600);
//条件判断语句? true:flase
System.out.println(j);//500
}