Java 运算符(详解)

文章目录

一、简介

在 Java 中,运算符是用来对数据进行操作和处理的符号,这些符号能使得 Java 程序进行各种数学计算、条件判断和数据处理,从而实现丰富的功能和逻辑。


二、算术运算符

运算符 含义
+ 加法
- 减法
* 乘法
/ 除法
取余
java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 15;
        int b = 4;

        // 算法运算符
        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));
    }
}

运行结果:

java 复制代码
加法:19
减法:11
乘法:60
除法:3
取余:3

三、自增自减运算符

  • 自增运算符 ++:
    • 前缀自增( ++a ):先将变量的值增加 1,然后再使用变量的值进行其他操作。
    • 后缀自增( a++ ):先使用变量的值进行其他操作,然后再将变量的值增加 1。
  • 自减运算符 --:
    • 前缀自减( --a ):先将变量的值减少 1,然后再使用变量的值进行其他操作。
    • 后缀自减( a-- ):先使用变量的值进行其他操作,然后再将变量的值减少 1。
java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 10;

		// 自增自减运算符
        System.out.println("后缀自增:" + a++);
        System.out.println("前缀自增:" + ++a);
        
        System.out.println("后缀自减:" + a--);
        System.out.println("前缀自减:" + --a);
    }
}

运行结果:

java 复制代码
后置自增:10
前置自增:12
后置自减:12
前置自减:10

四、关系运算符

运算符 含义
> 判断左边的值是否大于右边的值
< 判断左边的值是否小于右边的值
>= 判断左边的值是否大于等于右边的值
<= 判断左边的值是否小于等于右边的值
== 判断左右两边的值是否相等
!= 判断左右两边的值两个值是否不相等
java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 关系运算符
        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));
    }
}

运行结果:

java 复制代码
大于:false
小于:true
大于等于:false
小于等于:true
等等于:false
不等于:true

五、逻辑运算符

运算符 含义
&& 逻辑与,都为 true 时,结果才为 true,否则为 false
|| 逻辑或,有一个为 true,结果就为 true,两个都为 false 时,结果才为 false。
^ 逻辑异或,相同为 false,不同为 true
! 逻辑非,对结果去反,true 变 false,false 变 true
java 复制代码
public class Main {
    public static void main(String[] args) {
        boolean a = true;
        boolean b = false;

        // 逻辑运算符
        System.out.println("逻辑与:" + (a && b));
        System.out.println("逻辑或:" + (a || b));
        System.out.println("逻辑异或:" + (a ^ b));
        System.out.println("逻辑非:" + (!a));
    }
}

运行结果:

java 复制代码
逻辑与:false
逻辑或:true
逻辑异或:true
逻辑非:false

六、位运算符

运算符 含义
按位于,相对应的二进制都为 1,则结果位为 1,否则为 0
| 按位或,相对应的二进制只要有一个为 1,结果位就为 1,都为 0,结果位,才为 0
^ 按位异或,相对应的二进制位不同时,结果位为 1,相同时为 0。
按位取反,将操作数的二进制位取反,0 变 1,1 变 0。
<< 左移,将操作数的二进制位向左移动指定的位数,右边补 0 (左移一位相当于乘二)
>> 右移,将操作数的二进制位向右移动指定的位数,如果操作数为正数,左边补 0;如果为负数,左边补 1 (右移一位相当于除二)
>>> 无符号右移,无论操作数的正负,左边都补 0 (右移一位相当于除二)
java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 5; // 二进制:0000 0101
        int b = 4; // 二进制:0000 0100

        // 位运算符
        System.out.println("按位与:" + (a & b)); // 二进制:0000 0100 = 4
        System.out.println("按位或:" + (a | b)); // 二进制:0000 0101 = 5
        System.out.println("按位异或:" + (a ^ b)); // 二进制:0000 0001 = 1
        System.out.println("按位取反:" + (~a)); // 二进制:1000 0110 = -6
        System.out.println("左移:" + (a << 2)); // 二进制:0001 0100 = 20
        System.out.println("右移:" + (a >> 1)); // 二进制:0000 0010 = 2
        System.out.println("无符号右移:" + (a >>> 1)); // 二进制:0000 0010 = 2
    }
}

运行结果:

java 复制代码
按位与:4
按位或:5
按位异或:1
按位取反:-6
左移:20
右移:2
无符号右移:2

六、赋值运算符

运算符 含义
= 赋值运算符,将等号右边的值赋给左边
+= 将右侧的值与左侧变量的值相加,并将结果赋给左侧变量
-= 将右侧的值从左侧变量的值中减去,并将结果赋给左侧变量
*= 将左侧变量的值乘以右侧的值,并将结果赋给左侧变量
/= 将左侧变量的值除以右侧的值,并将结果赋给左侧变量
%= 将左侧变量的值与右侧的值进行取余运算,并将结果赋给左侧变量
&= 将左侧变量的值与右侧的值进行按位与运算,并将结果赋给左侧变量
|= 将左侧变量的值与右侧的值进行按位或运算,并将结果赋给左侧变量
^= 将左侧变量的值与右侧的值进行按位异或运算,并将结果赋给左侧变量
<<= 将左侧变量的值左移指定的位数,并将结果赋给左侧变量
>>= 将左侧变量的值右移指定的位数,并将结果赋给左侧变量
>>>= 将左侧变量的值无符号右移指定的位数,并将结果赋给左侧变量
java 复制代码
public class Main {
    public static void main(String[] args) {
        int num = 10;

        // 赋值运算符
        num += 5;
        System.out.println("+=:" + num);
        num -= 3;
        System.out.println("-=:" + num);
        num *= 2;
        System.out.println("*=:" + num);
        num /= 4;
        System.out.println("/=:" + num);
        num %= 5;
        System.out.println("%=:" + num);
    }
}

运行结果:

java 复制代码
+=:15
-=:12
*=:24
/=:6
%=:1

七、条件运算符

在 Java 中,条件运算符也称为三元运算符,作用是根据条件表达式的值选择两个表达式中的一个,类似于 if...else

java 复制代码
public class Main {
    public static void main(String[] args) {
        int a = 10;
        int b = 20;

        // 三目运算符
        System.out.println("最大值:" + ((a > b) ? a : b));  // a 不大于 b,所以返回 b 的值
    }
}

运行结果:

java 复制代码
最大值:20

八、字符串连接符

在 Java 中,加号(+)也可以用作字符串连接符,作用是连接两个或多个字符串。

java 复制代码
public class Main {
    public static void main(String[] args) {
        String a = "Hello ";
        String b = "World";

        // 字符串连接符
        System.out.println("字符串连接符:" + (a + b) + " (" + 2024 + ")");
    }
}

运行结果:

java 复制代码
连接符:Hello World (2024)

九、运算符优先级

当多个运算符出现在一个表达式中,谁先谁后呢?这就涉及到运算符的优先级别的问题。在一个多运算符的表达式中,运算符优先级不同会导致最后得出的结果差别甚大。

优先级 运算符
1 ( ) [ ]  .
2 !  ~  ++  --
3 *  /  %
4 +  -
5 <<  >>  >>>
6 <  <=  >  >=  instanceof
7 ==  !=
8 &
9 ^
10 |
11 &&
12 |
13 ? :
14 =  +=  -=  *=  /=  %=  &=
15

运算符的优先级不需要全部记住,你只要知道当你想要改变运算符执行的顺序时, 小括号 的优先级是最高的即可。


相关推荐
Ajiang282473530422 分钟前
对于C++中stack和queue的认识以及priority_queue的模拟实现
开发语言·c++
盼海26 分钟前
排序算法(五)--归并排序
数据结构·算法·排序算法
幽兰的天空27 分钟前
Python 中的模式匹配:深入了解 match 语句
开发语言·python
Theodore_10223 小时前
4 设计模式原则之接口隔离原则
java·开发语言·设计模式·java-ee·接口隔离原则·javaee
网易独家音乐人Mike Zhou4 小时前
【卡尔曼滤波】数据预测Prediction观测器的理论推导及应用 C语言、Python实现(Kalman Filter)
c语言·python·单片机·物联网·算法·嵌入式·iot
安静读书4 小时前
Python解析视频FPS(帧率)、分辨率信息
python·opencv·音视频
冰帝海岸4 小时前
01-spring security认证笔记
java·笔记·spring
世间万物皆对象5 小时前
Spring Boot核心概念:日志管理
java·spring boot·单元测试
没书读了5 小时前
ssm框架-spring-spring声明式事务
java·数据库·spring
----云烟----5 小时前
QT中QString类的各种使用
开发语言·qt