目录
1.算数运算符
2.增量运算符
2.1自增/自减运算符
4. 逻辑运算符
5.位运算符
6.移位运算符
7. 条件运算符
导言:
Java作为一门广泛使用的编程语言,其运算符是编写代码时必不可少的一部分。本篇博客将为你详细介绍Java中的各种运算符,从基础的算术运算符到高级的位运算符和三元运算符,为你打开运算符的奥秘之门。我们将通过代码示例和简单例子来帮助你更好地理解和应用这些运算符。
int a = 10;
int b = 5;
int sum = a + b; // 加法运算
int difference = a - b; // 减法运算
int product = a * b; // 乘法运算
int quotient = a / b; // 除法运算
int remainder = a % b; // 取余运算
注意事项:
1.都是二元运算符,使用时必须要有左右两个操作数
int a = 10; int b = 5; int sum = a + b; // 加法运算 int difference = a - b; // 减法运算 int product = a * b; // 乘法运算 int quotient = a / b; // 除法运算 int remainder = a % b; // 取余运算
2.int / int 结果还是int类型,而且会向下取整
inta=3; intb=2; //在数学中应该是1.5但是在Java中输出结果为1会向下取整,即小数点之后全部舍弃掉了System.out.println(a/b); //如果要得到数学中的结果,可以使用如下方式 doubled=a*1.0/b; //只要相乘数有一位数字是小数,结果就为小数 System.out.println(d);
3.做除法和取模时,右操作数不能为0
int a = 1; int b = 0; System.out.println(a / b) // 运行结果 Exception in thread "main" java.lang.ArithmeticException: / by zero at Test.main(Test.java:5)
4.% 不仅可以对整型取模,也可以对double类型取模,但是没有意义,一般都是对整型取模的
System.out.println(11.5 % 2.0); // 运行结果 1.5
5.两侧操作数类型不一致时,向类型大的提升
System.out.println(1+0.2); //+的左侧是int,右侧是double,在加之前int被提升为double型 //故输出1.2
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出3
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出2
a *= 3; // 相当于 a = a * 3
System.out.println(a); // 输出6
a /= 3; // 相当于 a = a / 3
System.out.println(a); // 输出2
a %= 3; // 相当于 a = a % 2
System.out.println(a); // 输出2
int x = 5;
// 前缀递增
int y = ++x;
// y的值为6,x的值也为6
// 后缀递增
int z = x++;
// z的值为6,x的值变为7
// 前缀递减
int a = --x;
// a的值为6,x的值变为6
// 后缀递减
int b = x--;
// b的值为6,x的值变为5
增量运算符在编程中常用于循环、条件语句和其他需要对变量进行递增或递减的场景。它们提供了一种简洁和方便的方式来更新变量的值。
3. 关系运算符
关系运算符用于比较两个值之间的关系,并返回一个布尔值(true或false)。下面是一些常见的关系运算符及其用法:
int a = 10;
int b = 5;
boolean isEqual = a == b; // 相等运算
boolean isNotEqual = a != b; // 不相等运算
boolean isGreater = a > b; // 大于运算
boolean isLess = a < b; // 小于运算
boolean isGreaterOrEqual = a >= b; // 大于等于运算
boolean isLessOrEqual = a <= b; // 小于等于运算
注意:当需要多次判断时,不能连着写,比如:3 < a < 5,Java程序与数学中是有区别的。
1.逻辑与运算符(&&)
逻辑与运算符表示两个条件都必须为true时,整个表达式才为true。如果任意一个条件为false,则整个表达式为false。
boolean a = true;
boolean b = false;
boolean result = a && b; // 结果为false,因为b为false
逻辑或运算符(||)
逻辑或运算符表示两个条件中至少一个为true时,整个表达式就为true。只有两个条件都为false时,整个表达式才为false。
boolean a = true;
boolean b = false;
boolean result = a || b; // 结果为true,因为a为true
逻辑非运算符(!)
逻辑非运算符用于取反操作,将true变为false,将false变为true。
boolean a = true;
boolean result = !a; // 结果为false,因为a为true
短路求值
逻辑与运算符(&&)和逻辑或运算符(||)都具有短路求值的特性。短路求值指的是当根据第一个条件的结果可以确定整个表达式的结果时,将不再计算第二个条件。
注意两点:
- 对于逻辑与运算符(&&),如果第一个条件为false,则整个表达式一定为false,不会执行第二个条件的计算。
- 对于逻辑或运算符(||),如果第一个条件为true,则整个表达式一定为true,不会执行第二个条件的计算。
boolean a = true;
boolean b = false;
boolean result = a || (b && someOtherCondition); // 如果a为true,则整个表达式为true,不会计算第二个条件
作用:短路求值可以提高程序的性能,并且在某些情况下避免不必要的计算。逻辑运算符在控制流语句、条件语句和布尔表达式中起着重要的作用。它们允许我们进行复杂的逻辑判断和条件组合,从而控制程序的行为。了解逻辑运算符的含义和用法对于编写正确和可读性强的代码至关重要。
按位与 &: 如果两个二进制对应位都是 1, 则结果为 1, 否则结果为 0 。
12 & 5
12: 00001100
5: 00000101
-------------
00000100
结果: 00000100 (4)
按位或(|): 如果两个二进制位都是 0, 则结果为 0, 否则结果为 1
12 | 5
12: 00001100
5: 00000101
--------------
00001101
结果: 00001101 (13)
~12
12: 00001100
------------
结果: 11110011 (-13)
注意事项:
1. 0x 前缀的数字为 十六进制 数字. 十六进制可以看成是二进制的简化表示方式. 一个十六进制数字对应 4 个二进制位。2. 0xf 表示 10 进制的 15, 也就是二进制的 1111。3.printf 能够格式化输出内容, %x 表示按照十六进制输出4.\n 表示换行符
按位异或 ^: 如果两个数字的二进制位相同, 则结果为 0, 相异则结果为 1
12 ^ 5
12: 00001100
5: 00000101
--------------
00001001
结果: 00001001 (9)
注意:如果两个数相同,则异或的结果为0
1. 左移 <<: 最左侧位不要了, 最右侧补 0.
12 << 2
12: 00001100
------------
结果: 00110000 (48)
2. 右移 >>: 最右侧位不要了, 最左侧补符号位(正数补0,负数补1)
12 >> 2
12: 00001100
------------
结果: 00000011 (3)
3.无符号右移 >>>: 最右侧位不要了, 最左侧补 0.
-12 >>> 2
-12: 11110011
------------
结果: 00111100 (60)
注意:1. 左移 1 位, 相当于原数字 * 2. 左移 N 位, 相当于原数字 * 2 的N次方.2. 右移 1 位, 相当于原数字 / 2. 右移 N 位, 相当于原数字 / 2 的N次方.3. 由于计算机计算移位效率高于计算乘除, 当某个代码正好乘除 2 的N次方的时候可以用移位运算代替.4. 移动负数位或者移位位数过大都没有意义.
结构为:条件 ? 结果1 : 结果2
如果条件为true,那么整个表达式的结果就是结果1;如果条件为false,则结果就是结果2。
可以将条件运算符理解为一个问答游戏。条件是一个问题,如果回答为true,我们就选择结果1作为答案;如果回答为false,我们就选择结果2作为答案。
这是一个具体的例子:
int age = 20;
String message = (age >= 18) ? "成年人" : "未成年人";
在上面的例子中,我们根据年龄的条件判断选择不同的信息。如果年龄大于或等于18岁,我们选择"成年人"作为信息;否则,我们选择"未成年人"作为信息。
好的,内容就到这里,如果以上有错误的地方恳请在评论区指出,如果我帮助到你,希望你也可以三连支持一下,谢谢。堆糖同学会很赞同的。