目录
一、算数运算符
(一)、基本四则运算符:
1、加法、减法、乘法运算符
2、除法运算符
3、取模运算符
(二)、算数运算符
(三)、自增、自减运算符
二、关系运算符
三、逻辑运算符
(一)、逻辑与
(二)、逻辑或
(三)、逻辑非
四、位运算符
(一)、按位与
(二)、按位或
(三)、按位取反
(四)、按位异或
五、移位运算符
(一)、左移运算符
(二)、右移运算符
(三)、无符号右移
六、条件运算符
加法运算符:+
减法运算符:-
乘法运算符:*
注意:
除法运算符:/
注意:
取模运算符:%
注意:
算术运算符有:+=,-=,*=,/=,%=
例如:a*=12+9 ->a=a*(12+9)
注意:
自增运算符:++a(前置自增),a++(后置自增)
自减运算符:--a(前置自减),a--(后置自减)
这类运算符的结果都是先将变量进行加1或者减1,然后再将运算结果赋值给该变量。
那么前置自增和后置自增到底有什么区别?
public static void main(String[] args) {
int a=1;
int b=a++;
System.out.println(a);
System.out.println(b);
}
运行结果:
public static void main(String[] args) {
int a=1;
int b=++a;
System.out.println(a);
System.out.println(b);
}
运行结果:
这两个的区别主要是参与表达式运算时,前置自增是先进行加一运算,在进行相关表达式的计算,但是后置自增,是先进行相关表达式计算,再进行加一运算,前置和后置对于自增运算变量本身并没有较大区别,但是对于其所参与的表达式的值有影响。
所以,对于上述例子,第一段代码是先对b进行赋值运算,再自增,故a=1,b=2;但是在第二段代码中,是先对a进行自增运算,此时a的值为2,再进行赋值,故b的值为2。
关系运算符包含有:
==、!=、>、>=、<、<=
注意:
通俗来说,关系运算符主要功能时进行判断。
逻辑与:&&
注意:
public static void main(String[] args) {
int a=0;
int b=1;
System.out.println((a==b)&&(a==(a++)));
System.out.println(a);
}
运行结果:
分析:由于a==b的值为false,&&便不会执行后面的代码,所以a=1。
public static void main(String[] args) {
int a=1;
int b=1;
System.out.println((a==b)&&(a==(a++)));
System.out.println(a);
}
运行结果:
分析:由于a==b的值为true,&&便会执行后面的代码,所以a=2。
逻辑或:||
注意:
由于||与&&类似,便不再进行赘述。
逻辑非:!
注意:
由于在计算机中利用二进制存储数据信息,八位二进制为一个字节,在进行位运算时,首先需要将要运算的数字转换为二进制数,再进行运算。
按位与:&
public static void main(String[] args) {
int a=3;
int b=5;
System.out.println(a&b);
}
运行结果:
解析:
&的两端可以是布尔表达式,但是它并不遵守短路运算,&两端的布尔表达式都会执行 ,同样要求只有&两端布尔表达式都为true时,结果才是true。
按位或:|
public static void main(String[] args) {
int a=3;
int b=5;
System.out.println(a|b);
}
运行结果:
解析:
|的两端可以是布尔表达式,但是它并不遵守短路运算,| 两端的布尔表达式都会执行 ,同样要求只有|只要有一端布尔表达式为true时,结果是true。
按位取反:~
public static void main(String[] args) {
int a=3;
System.out.println(~a);
}
运行结果:
解析:
按位异或:^
^运算的规则是相同为0,不同为1。
public static void main(String[] args) {
int a=3;
int b=5;
System.out.println(a^b);
}
运算结果:
解析:
左移运算符:<<
运算规则:向左移位,右侧补0。
public static void main(String[] args) {
int a=3;
System.out.println(a<<1);
}
运行结果:
解析:
右移运算符:>>
运算规则:向右移位,左侧补符号位
public static void main(String[] args) {
int a=3;
System.out.println(a>>1);
}
运行结果:
解析:
无符号右移:>>>
运算规则:向右移位,左侧补0
注意:没有无符号左移
条件运算符:
表达式1?表达式2:表达式3
运算规则:
要求:表达式2和表达式3必须为同类型表达式,除非能发生隐式转换,还有条件运算符要有计算结果。
例题解析:
public static void main(String[] args) {
int a=10;
int b=21;
int c=a9?11:b:a;
System.out.println(c);
}
运行结果: 11
这个题目首先判断a9的判断,满足则c=11。