目录
前言:
在Java编程中,运算符是用于执行各种计算和操作的重要元素。它们使得我们能够对数据进行处理、比较和组合,从而实现复杂的逻辑。
一、算术运算符
算术运算符用于执行基本的数学运算,如加法、减法、乘法和除法。以下是常见的算术运算符:
+ :加法运算符,用于将两个操作数相加。
- :减法运算符,用于从第一个操作数中减去第二个操作数。
* :乘法运算符,用于将两个操作数相乘。
/ :除法运算符,用于将第一个操作数除以第二个操作数。需要注意的是,当两个整数相除时, 结果会舍去小数部分。
% :取模运算符,返回除法运算的余数。
public class Main {
public static void main(String[] args) {
int a=10;
int b=3;
System.out.println(a+b); //13
System.out.println(a-b); //7
System.out.println(a*b); //30
System.out.println(a/b); //3
System.out.println(a%b); //1
}
}
注意事项:
1.都是二元运算符,使用时必须要有左右两个操作数
2.int / int 结果还是int类型,而且会向下取整
3.做除法和取模时,右操作数不能为0
4.% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
5.两侧操作数类型不一致时,向类型大的提升
二、关系运算符
关系运算符用于比较两个操作数之间的关系,返回一个布尔值( true 或 false )。常见的关系运算符有:
== :检查两个操作数是否相等。
!= :检查两个操作数是否不相等。
< :检查第一个操作数是否小于第二个操作数。
> :检查第一个操作数是否大于第二个操作数。
<= :检查第一个操作数是否小于或等于第二个操作数。
>= :检查第一个操作数是否大于或等于第二个操作数。
public class Main {
public static void main(String[] args) {
int a=10;
int b=30;
System.out.println(a == b);
System.out.println(a != b);
System.out.println(a > b);
System.out.println(a < b);
System.out.println(a >= b);
System.out.println(a <= b);
}
}
注意:当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的
三、逻辑运算符
逻辑运算符用于组合多个布尔表达式,以实现更复杂的逻辑判断。常见的逻辑运算符包括:
3.1 && :逻辑与运算符
当两个操作数都为 true 时,结果为 true ,否则为 false 。
public class Main {
public static void main(String[] args) {
int a=2;
int b=3;
System.out.println(a == 2 && b == 3);
System.out.println(a == 2 && b == 1);
System.out.println(a == 1 && b == 3);
System.out.println(a == 1 && b == 1);
}
}
3.2 || :逻辑或运算符
当至少一个操作数为 true 时,结果为 true ,只有当两个操作数都为 false 时,结果才为 false 。
public class Main {
public static void main(String[] args) {
int a=2;
int b=3;
System.out.println(a == 2 || b == 3);
System.out.println(a == 2 || b == 1);
System.out.println(a == 1 || b == 3);
System.out.println(a == 1 || b == 1);
}
}
3.3 ! :逻辑非运算符
用于反转操作数的布尔值。
public class Main {
public static void main(String[] args) {
int a=2;
System.out.println(!(a == 2));
System.out.println(!(a == 3));
}
}
四、位运算符
位运算符用于对操作数的二进制位进行操作。这些运算符在处理底层数据和优化性能时有时很有用。常见的位运算符有:
4.1 & :按位与运算符
如果两个二进制位都是 1, 则结果为 1, 否则结果为 0。
public class Main {
public static void main(String[] args) {
int a=5;
int b=10;
System.out.println(a&b);
}
}
// 00000000 00000000 00000000 00000101 -----5
&
// 00000000 00000000 00000000 00001010 -----10
//---------------------------------------------
// 00000000 00000000 00000000 00000000 -----0
4.2 | :按位或运算符
如果两个二进制位都是 0, 则结果为 0, 否则结果为 1。
public class Main {
public static void main(String[] args) {
int a=5;
int b=10;
System.out.println(a|b);
}
}
// 00000000 00000000 00000000 00000101 -----5
|
// 00000000 00000000 00000000 00001010 -----10
//---------------------------------------------
// 00000000 00000000 00000000 00001111 -----15
4.3 ^ :按位异或运算符
如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1。
public class Main {
public static void main(String[] args) {
int a=5;
int b=10;
System.out.println(a^b);
}
}
// 00000000 00000000 00000000 00000101 -----5
^
// 00000000 00000000 00000000 00001010 -----10
//---------------------------------------------
// 00000000 00000000 00000000 00001111 -----15
注意:如果两个数相同,则异或的结果为0
4.4 ~ :按位取反运算符
反转操作数的每一位。
public class Main {
public static void main(String[] args) {
int a=0xb;
System.out.printf("%x\n",~a);
}
}
// 00000000 00000000 00000000 00001011
// ~
------------------------------------------
// 1111 1111 1111 1111 1111 1111 1111 0100
// f f f f f f f 4
注意:
0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位.
0xb 表示 10 进制的 11, 也就是二进制的 1011
printf 能够格式化输出内容, %x 表示按照十六进制输出.
\n 表示换行符
4.5 << :左移运算符
将操作数的二进制位向左移动指定的位数。
public class Main {
public static void main(String[] args) {
int a=10;
System.out.println(a<<1);
}
}
// 00000000 00000000 00000000 00001010
// <<
// --------------------------------------
// 00000000 00000000 00000000 00010100 -----20
左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方
4.6 >> :右移运算符
将操作数的二进制位向右移动指定的位数,正数右移时高位补 0,负数右移时高位补 1(算术右移)。
public class Main {
public static void main(String[] args) {
int a=10;
System.out.println(a<<1);
}
}
// 00000000 00000000 00000000 00001010
// >>
// --------------------------------------
// 00000000 00000000 00000000 00000101 -----5
右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.
五、增量运算符
例如 += 、 -= 、 *= 、 /= 等,该种类型运算符操作完成后,会将操纵的结果赋值给左操作数。
int a=10;
System.out.println(a+=2);//相当于a=a+2 //12
int a=10;
System.out.println(a-=2);//相当于a=a-2 //8
int a=10;
System.out.println(a*=2);//相当于a=a*2 20
int a=10;
System.out.println(a/=2);//相当于a=a/2 5
int a=10;
System.out.println(a%=2);//相当于a=a%2 0
注意:只有变量才能使用该运算符,常量不能使用。
六、自增/自减运算符 ++ --
++是自增1,--是自减1
前置++先++再使用,后置++先使用后++,前置--先--再使用,后置--先使用后--
总结:
正确理解和熟练运用这些运算符是编写高效和准确 Java 代码的基础。