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

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


相关推荐
小雨下雨的雨18 小时前
井字棋AI机器人实现详解 - Minimax算法实战-鸿蒙PC Electron框架完成
前端·人工智能·算法·华为·electron·鸿蒙
xieliyu.21 小时前
Java算法精讲:双指针(三)
java·开发语言·算法
love530love21 小时前
LiveTalking 数字人项目 Windows 部署完全指南(EPGF 架构)
人工智能·windows·python·架构·livetalking·epgf
遇事不決洛必達21 小时前
【Python基础】GIL 锁是什么及其对爬虫的影响
爬虫·python·线程·进程·gil锁
星辰徐哥21 小时前
Spring Boot 微服务架构设计与实现
spring boot·后端·微服务
星辰徐哥21 小时前
Spring Boot 数据导入导出与报表生成
spring boot·后端·ui
明夜之约21 小时前
Spring Boot 自动装配源码
java·spring boot·后端
Leaton Lee21 小时前
Spring Boot分层架构详解:从Controller到Service再到Mapper的完整流程
java·spring boot·后端·架构
Micro麦可乐21 小时前
Spring Boot 实战:从零设计一个短链系统(含完整代码与数据库设计)
数据库·spring boot·后端·哈希算法·雪花算法·短链系统
Jinkxs21 小时前
Resilience4j- 与 Spring Boot 快速集成:自动配置与基础注解使用
java·spring boot·后端