从初学者到专家:Java运算符的完整指南

目录

1.算数运算符

2.增量运算符 

2.1自增/自减运算符

4. 逻辑运算符

5.位运算符

6.移位运算符  

 7. 条件运算符



导言:
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自增/自减运算符

递增运算符有两种形式:前缀递增和后缀递增。 前缀递增运算符(++x) 将先将变量的值增加1,然后返回增加后的值。 后缀递增运算符(x++) 将返回变量的原始值,然后再将其增加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. 逻辑运算符

当需要在条件语句或布尔表达式中进行逻辑判断时,通过逻辑运算符来操作布尔值(true或false)。

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

短路求值

逻辑与运算符(&&)和逻辑或运算符(||)都具有短路求值的特性。短路求值指的是当根据第一个条件的结果可以确定整个表达式的结果时,将不再计算第二个条件。

注意两点:

  1. 对于逻辑与运算符(&&),如果第一个条件为false,则整个表达式一定为false,不会执行第二个条件的计算。
  2. 对于逻辑或运算符(||),如果第一个条件为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)

Nota :
Cuando los operandos de & y | son números enteros (int, short, long, byte) , representan operaciones bit a bit , y cuando los operandos son booleanos , representan operaciones lógicas.

Inversión bit a bit ~: si el bit es 0 , gírelo a 1, si el bit es 1 , gírelo a 0
~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

Solo hay un operador condicional : el operador ternario

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.

Supongo que te gusta

Origin blog.csdn.net/LHY537200/article/details/132131419
Recomendado
Clasificación