HelloCoder HelloCoder
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
首页
《Java小白求职之路》
《小白学Java》
计算机毕设
  • 一些免费计算机资源
  • 脚手架工具
  • 《从0到1学习Java多线程》
  • 《从0到1搭建服务器》
  • 《可观测和监控》
  • 《k8s学习心得》
随笔
关于作者
  • 《PureJavaCoderRoad》

    • 导读

    • Java基础

      • Java入门

      • Java语法

        • 1、Java基础语法
        • 2、Java数据变量和类型
        • 3、Java数组
        • 4、Java运算符
        • 5、字符和字符串
        • 6、注释
      • Java流程控制

      • 面向对象

      • 异常处理

    • Java进阶

    • Java高阶

    • 开发辅助工具

    • 计算机网络

    • 数据库

    • JavaEE

    • 中间件

    • 架构

    • 建议

  • PureJavaCoderRoad
  • Java基础
  • Java语法
#Java #运算符
HaC
2022-05-24
目录

4、Java运算符

Java是一门逻辑语言,在进行算术运算的时候,CPU可以直接识别,常见的运算符包括以下几种:

# 算术运算符

Java中不仅支持加减乘除,也支持自增、自减。

运算符 运算规则 范例 结果
+ 加 1+1 2
+ 连接字符串 “中”+“国” “中国”
- 负号 int a=-3; -3
- 减 3-1 2
* 乘 2*3 6
/ 除 5/2 2
% 取模(余数) 5/2 1
++ 自增 int a=1;a++或者++a 2
-- 自减 int b=3;a--或者--a 2

eg:

int x = 5;
int y = 2;
System.out.println(x + y); //7
System.out.println(x - y); //3
System.out.println(x * y); //10
System.out.println(x / y); //2
System.out.println(x % y); //1

x / y 在数学中本应该得到 2.5 ,但是 在int整型中,不能表示浮点,所以结果取整数部分,舍余数。

如果需要精确到小数,可以使用float或者double类型。

eg:

double x = 5d;
double y = 2d;
System.out.println(x / y); //2.5

在8种基本数据类型中,以下6种数据都可以进行直接的算术运算:

  • 4个 整数型:byte、short、int、long
  • 2个浮点型:float、double

char 类型也可以运算,因为它也是10进制的Unicode值,但是不推荐这样做

# ++、--的使用

++、-- 表示自增、自减

int x = 1;
x++;
System.out.println(x);  //2

x--同理。

注意点:表达式 x++ 和 ++x 是不一样的,这两种方法都可以表示自增,但是赋值和运算顺序不一样。

eg1:

int x = 1;
int y = x++;
System.out.println(x);  // 2
System.out.println(y);  // 1

eg2:

int x = 1;
int y = ++x;
System.out.println(x);  // 2
System.out.println(y);  // 2

int y = x++;中,x是 先把x赋值给y,然后自增。

int y = ++x;中,x是 先自增,然后赋值给y。

# 赋值运算符

运算符 运算规则 范例 结果
= 赋值 int a=2 2
+= 加后赋值 int a=2,a+=2 4
-= 减后赋值 int a=2,a-=2 0
*= 乘后赋值 int a=2,a*=2 4
/= 整除后赋值 int a=2,a/=2 1
%= 取模后赋值 int a=2,a%=2 0
int x = 1;
x+=2; //相当于 x = x + 2
System.out.println(x); // 3

+=这种形式的赋值运算符,会将结果自动强转成等号左边的数据类型:

eg:

byte x = 20;
x += 30;// 相当于 x = (byte)(x+30);
System.out.println(x);  //50

# 比较运算符

运算符 运算规则 范例 结果
== 相等于 4==3 false
!= 不等于 4!=3 true
< 小于 4<3 false
> 大于 4>3 true
<= 小于等于 4<=3 false
>= 大于等于 4>=3 true

赋值运算符的 = 符号,是用来将 = 符号右边的值,赋值给 = 符号左边的变量;

比较运算符的 == 符号,是用来判断 == 符号 左右变量的值是否相等的。

比较运算符 表达式返回的是一个boolean类型的结果。

eg:

int x = 2;
int y = 1;
System.out.println(x > y); //true

# 逻辑运算符

运算符 运算规则 范例 结果
! 非 !true false
&& 逻辑或操作符,有一个false结果为false false&&true false
|| 逻辑非运算符,有一个true结果就为true false||true true

! 表示取反

eg:

boolean a = true;
boolean b = false;
System.out.println(!a);   //false
System.out.println(a && b && a); //false
System.out.println(a || b || b); //true

&& 有一个优化,假如第一个为false,就会直接返回false,不会执行后面的判断

比如说 b && a && a 只要 b 是false,不需要再判断后面的 a 就可以直接返回结果。

# 条件运算符

条件运算符也被称为三元运算符。该运算符有3个操作数,并且需要判断布尔表达式的值。

常见的三元运算符是 ?:

eg:

String str = 2 > 1 ? "大于1" : "小于1";
System.out.println(str);  //大于1

2 > 1 ? "大于1" : "小于1" 中

第一个表达式即2 > 1是一个布尔型的判断

如果第一个参数为true ,则执行第二个表达式"大于1",即:左侧

如果第一个参数为false ,则执行第三个表达式"小于1",即:右侧

# 位运算符

运算符 运算规则 范例 结果
& 与,两个操作数中位都为1,结果才为1, 否则结果为0 false&true false
| 或,两个操作数中有一个为1,结果就为1 false|true true
^ 异或,相同 则为 0,不相同 则为1 true^flase true
~ 非,取反 ~ (-2) 1
<< 按位左移运算符 3 << 3 得到24
>> 带符号按位右移运算符 16 >> 2 得到4即 00000100
>>> 无符号按位右移运算符 -4 >>> 2 得到-1

true 可以 理解为 1,false 可以理解为 0

位运算符是按照位进行运算的,计算机中 1byte 字节=8 bit 位。

eg:

8的二进制表示:
1000

右移两位后:
10

即2

eg2:

-8>>2
-8的二进制:
11111111111111111111111111111000

右移两位:(前面补符号位 即 补 11)
11111111111111111111111111111110

eg3:

-8>>>2
-8 二进制 表示:
11111111111111111111111111111000

前面补两位:
00111111111111111111111111111110

明显是着正数,正数补码和原码相同,所以00111111111111111111111111111110的原值是1073741822
1073741822

eg4:

8 & 1  结果为 
8的二进制表示:
1000
1的二进制表示:
0001

& 结果为
0000

即0

位运算符比较复杂,一般在代码中比较少用到。

面试中,业务中 用到的地方不多,可以忽略,如果要详细学习,需要先学习一下原码、补码、反码。这就涉及计算机基础了,这里不展开了。

# Java运算符优先级

在Java的计算表达式中,运算优先级从高到低依次是:

  • ()
  • ! ~ ++ --
  • * / %
  • + -
  • << >> >>>
  • &
  • |
  • += -= *= /=

eg:

int i = 1;
System.out.println(1 + 2 * 4 / i++); // 9

这里记住括号优先级最高就行,所以业务中使用括号要更加明了。

#Java#运算符
上次更新: 2026-07-01 15:23:28
最近更新
01
脏读、幻读
07-01
02
elasticsearch面试题
07-01
03
G1、ZGC有了解过吗?
07-01
更多文章>
Theme by Vdoing | Copyright © 2020-2026 HaC
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式