目录
导言:
Java作为一门广泛使用的编程语言,其运算符是编写代码时必不可少的一部分。本篇博客将为你详细介绍Java中的各种运算符,从基础的算术运算符到高级的位运算符和三元运算符,为你打开运算符的奥秘之门。我们将通过代码示例和简单例子来帮助你更好地理解和应用这些运算符。
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; // 取余运算
注意事项:
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
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
2.1自增/自减运算符
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程序与数学中是有区别的。
4. 逻辑运算符
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,不会计算第二个条件
Efecto: la evaluación de cortocircuito puede mejorar el rendimiento del programa y, en algunos casos, evitar cálculos innecesarios. Los operadores lógicos juegan un papel importante en las declaraciones de flujo de control, las declaraciones condicionales y las expresiones booleanas. Nos permiten hacer juicios lógicos complejos y combinaciones de condiciones para controlar el comportamiento del programa. Comprender el significado y el uso de los operadores lógicos es fundamental para escribir un código correcto y legible.
5. Operadores bit a bit
Bitwise AND & : si ambos bits binarios correspondientes son 1, el resultado es 1; de lo contrario, el resultado es 0 .
12 & 5
12: 00001100
5: 00000101
-------------
00000100
结果: 00000100 (4)
Bitwise OR (|) : si ambos bits binarios son 0, el resultado es 0; de lo contrario, el resultado es 1
12 | 5
12: 00001100
5: 00000101
--------------
00001101
结果: 00001101 (13)
~12
12: 00001100
------------
结果: 11110011 (-13)
Precauciones:
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
6.移位运算符
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. Desplazar 1 bit a la derecha equivale al número original / 2. Desplazar N bits a la derecha equivale al número original / 2 elevado a la N-ésima potencia.3. Dado que la eficiencia del cálculo de desplazamiento por computadora es mayor que la de la multiplicación y la división, cuando un determinado código simplemente multiplica y divide 2 a la N-ésima potencia, se puede reemplazar por una operación de desplazamiento.4. No tiene sentido mover dígitos negativos o desplazar dígitos demasiado grandes.
7. Operadores Condicionales
La estructura es: condición?resultado1 :resultado2
Si la condición es verdadera, el resultado de toda la expresión es el resultado 1; si la condición es falsa, el resultado es el resultado 2.
Piense en los operadores condicionales como un juego de preguntas. La condición es una pregunta, y si la respuesta es verdadera, elegimos el resultado 1 como respuesta; si la respuesta es falsa, elegimos el resultado 2 como respuesta.
He aquí un ejemplo concreto:
int age = 20;
String message = (age >= 18) ? "成年人" : "未成年人";
En el ejemplo anterior, seleccionamos información diferente en función del juicio condicional de la edad. Si la edad es mayor o igual a 18 años, seleccionamos "Adulto" como información, de lo contrario, seleccionamos "Menor" como información.
Bien, eso es todo por el contenido. Si hay algún error arriba, indíquelo en el área de comentarios. Si puedo ayudarlo, espero que pueda apoyarme una y otra vez, gracias. Los estudiantes de Heap Tang estarán muy de acuerdo.