目录
前言
这里是对Java运算符的基本讲解内容,会尽个人之所能来帮助各位初学者了解并且去运用Java的运算符。
这里是本文所有代码的合集:J-CSDN/src/CSDN.java · hunter/J_S - 码云 - 开源中国 (gitee.com)
对进制之间的相互转化不熟的可以看:http://t.csdn.cn/Ln6gJ
温馨提示:这里为了方便不用每次书写都写 public class CSDN 就把里面每一个main后面加数字
以防报错(只能有一个main方法),各位如果要编译的时候注意去掉后面数字就行。
什么是运算符
计算机的最基本的用途之一就是执行数学运算,对操作数进行操作时的符号,不同运算符操作的含义不同。
作为一门计算机语言,Java也提供了一套丰富的运算符来操纵变量。Java中运算符可分为以下:算术运算符(+ - * /)、关系运算符(< > ==)、逻辑运算符、位运算符、移位运算符以及条件运算符等。
算术运算符
算数运算符就是我们学数学的 + 、 - 、 × 、 ÷ 。只不过在Java里面有所细小的区分,在Java当中乘号用 * 来表示,除号分别用户 / 和 %(取模) 来表示。
+ - * / %
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a + b);//30
System.out.println(a - b);//-10
System.out.println(a * b);//200
System.out.println(a / b);//0 要的是整数部分
System.out.println(a % b);//10 %取模相当于取的是余数部分
}
注意
- 做除法和取模时,右操作数不能为0。
- % 不仅可以对整型取模,也可以对double类型取模。
- 两侧操作数类型不一致时,向类型大的提升。
增量运算符
+= -= *= %=
该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。
public static void main(String[] args) {
int a = 10;
a += 1;//可以想象成--> a=a+1
System.out.println(a);//11
a -= 2;//可以想象成--> a=a-1
System.out.println(a);//9
a *= 2;//可以想象成--> a=a*1
System.out.println(a);//18
a /= 2;//可以想象成--> a=a/1
System.out.println(a);//9
a %= 2;//可以想象成--> a=a%1
System.out.println(a);//1
}
自增/自减运算符
++ --
自增/自减运算符分为前置++和后置++ 、 前置--和后置--。
- 前置的是:先 ++,后使用。
- 后置的是:先使用,后 ++。
- PS:-- 和 ++ 的规则一样不过是一个 +1 ,一个是 -1。
只有变量才能++和--,常量是不行的。
public static void main(String[] args) {
int a = 10;
int b = 0;
b = a++;
//先把a的值给b-->b=10;然后a本身自己 +1-->11
System.out.println(b);//10
System.out.println(a);//11
//上面的 a自己++ 已经等于11了
b = ++a;
//先把 a+1 的值给b-->b=12;a本身这里自己+1-->12
System.out.println(b);//12
System.out.println(a);//12
}
关系运算符
== != < > <= >=
计算结果是 true 或者 false 。
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a>b);//false
System.out.println(a<b);//true
System.out.println(a==b);//false
System.out.println(a!=b);//true
System.out.println(a>=b);//false
System.out.println(a<=b);//true
}
注意:
- ==是等于的意思,=是赋值符号,在书写的时候不要搞混了。
- 当需要多次判断时,不能连着写,比如:10 < a < 20,Java程序与数学中是有区别的。
逻辑运算符
&& (逻辑与) ||(逻辑或) !(逻辑取反)
- 运算结果都是 boolean类型(true或者false)。
- && 两边都为真才是真的,|| 两边有一边是真的就是真的。
- !(表达式 )把表达式为真的真变假,把表达式为假变真。
- && 和 || 在中文的理解中,可以理解分别为并且和或者的关系。
public static void main(String[] args) {
int a = 1;
int b = 2;
//逻辑与 &&
System.out.println(a == 1 && b == 2); // 左为真 且 右为真 则结果为真
System.out.println(a == 1 && b > 100); // 左为真 但 右为假 则结果为假
System.out.println(a > 100 && b == 2); // 左为假 但 右为真 则结果为假
System.out.println(a > 100 && b > 100); // 左为假 且 右为假 则结果为假
//逻辑或 ||
System.out.println(a == 1 || b == 2); // 左为真 且 右为真 则结果为真
System.out.println(a == 1 || b > 100); // 左为真 但 右为假 则结果也为真
System.out.println(a > 100 || b == 2); // 左为假 但 右为真 则结果也为真
System.out.println(a > 100 || b > 100); // 左为假 且 右为假 则结果为假
System.out.println(!(a == 1)); // a == 1 为true,取个非就是false
System.out.println(!(a != 1)); // a != 1 为false,取个非就是true
}
短路求值
- 对于 && , 如果左侧表达式值为 false, 则表达式结果一定是 false, 无需计算右侧表达式。
- 对于 || , 如果左侧表达式值为 true, 则表达式结果一定是 true, 无需计算右侧表达式。
位运算符
&(按位与) |(按位或) ^(按位异或) ~(按位取反)
Java 中数据存储的最小单位是字节,而数据操作的最小单位是比特位。
字节是最小的存储单位,每个字节是由8个二 进制比特位组成的,多个字节组合在一起可以表示各种不同的数据。
位操作表示,按二进制位运算. 计算机中都是使用二进制来表示数据的(01构成的序列),按位运算就是在按照二进制位的每一位依次进行计算。
PS:
- & 和 | 如果表达式结果为 boolean 时, 也表示逻辑运算。但与 && || 相比, 它们不支持短路求值。
- & 、| 、^口诀:按位与:全一为一,按位或:有一则一,按位异或:有一则一,全一为零。
- ~ 对每一个二进制位取相反的数,一变零,零变一。
public static void main(String[] args) {
int a = 10;
int b = 20;
System.out.println(a & b);//0
System.out.println(a | b);//30
System.out.println(a ^ b);//30
System.out.println(~a);//-11
}
移位运算
>> (右移操作符) <<(左移操作符) >>> (无符号的右移)
- 左移 <<: 最左侧位不要了, 最右侧补 0。
注意:向左移位时,丢弃的是符号位,因此正数左移可能会编程负数。
- 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0, 负数补1)
- 无符号右移 >>>: 最右侧位不要了, 最左侧补 0.
public static void main(String[] args) {
int a = 5;
System.out.println(a<<1);//10
System.out.println(a>>1);//20
System.out.println(a>>>1);//2
}
提示:
- 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.
- 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
条件运算符
条件运算符: 表达式1 ? 表达式2 : 表达式3
当 表达式1 的值为 true 时, 整个表达式的值为 表达式2 的值; 当 表达式1 的值为 false 时, 整个表达式的值为 表达式3 的值。
public static void main(String[] args) {
int a = 10;
int b = 20;
int max = a > b ? a : b;
//a>b是false 所以执行b-->b=20-->max=20
System.out.println(max);
}
注意:
- 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
- 表达式不能单独存在,其产生的结果必须要被使用。
后语
希望本篇文章能对各位有所帮助,如果各位有任何问题欢迎各位老铁提出!!!