Java运算符与表达式

一、运算符分类

Java运算符分为以下几类:

类别运算符说明
算术运算符+-*/%++--数学运算,支持自增/自减
关系运算符==!=><>=<=比较大小或相等性
逻辑运算符&&||!布尔逻辑运算,支持短路特性
位运算符&|^~<<>>>>>二进制位操作(按位与、或、异或等)
赋值运算符=+=-=*=/=%=&=|=^=<<=>>=>>>=赋值与运算结合
条件运算符? :三元运算符,简化条件判断
类型检查instanceof判断对象是否属于某个类/接口
其他->(Lambda表达式)用于函数式编程

二、算术运算符

基本运算
  • +-*/:加减乘除。

  • %:取模(余数)。

  • ++/--:自增/自减(前缀与后缀区别):

int a = 5;
int b = a++; // b=5, a=6(后缀:先赋值再自增)
int c = ++a; // c=7, a=7(前缀:先自增再赋值)
注意事项
  • 整数除法:结果自动舍弃小数部分。
int result = 10 / 3; // result=3
  • 浮点数精度:运算可能产生舍入误差。
double d = 0.1 + 0.2; // d≈0.30000000000000004

三、关系运算符

  • 返回布尔值(true 或 false)。

  • 示例

int x = 10, y = 20;
boolean isEqual = (x == y);      // false
boolean isGreater = (x > y);     // false

四、逻辑运算符

(1) 基本操作
  • &&(逻辑与):全真为真,支持短路(左操作数为假时跳过右操作数)。

  • ||(逻辑或):一真即真,支持短路(左操作数为真时跳过右操作数)。

  • !(逻辑非):取反。

(2) 短路特性示例
boolean result = (false && (10/0 == 0)); // 不会抛出异常(右侧不执行)

五、位运算符

按位操作
  • &:按位与。

  • |:按位或。

  • ^:按位异或(相同为0,不同为1)。

  • ~:按位取反。

  • <<:左移(低位补0)。

  • >>:右移(符号位填充)。

  • >>>:无符号右移(高位补0)。

示例

int a = 5;          // 二进制 00000101
int b = a << 2;     // b=20(二进制 00010100)
int c = a & 0b0011; // c=1(按位与)

六、赋值运算符

复合赋值:简化运算并赋值。

int x = 10;
x += 5;   // 等价于 x = x + 5
x *= 2;   // 等价于 x = x * 2

注意类型转换

byte b = 10;
b += 5;    // 合法(等价于 b = (byte)(b + 5))
b = b + 5; // 错误:需要强制转换(int→byte)

七、条件运算符(三元运算符)

  • 语法条件 ? 表达式1 : 表达式2

  • 示例

int max = (a > b) ? a : b; // 返回较大的值

八、运算符优先级与结合性

运算符优先级从高到低(部分常见):

优先级运算符结合性
1()[].(方法调用、数组访问)左→右
2!~++--+(正)、-(负)、(类型)(强制转换)右→左
3*/%左→右
4+-左→右
5<<>>>>>左→右
6<<=>>=instanceof左→右
7==!=左→右
8&左→右
9^左→右
10|左→右
11&&左→右
12||左→右
13? :右→左
14=+=-=等赋值运算符右→左

示例

int result = 5 + 3 * 2;      // 3*2先计算,result=11
boolean flag = !(a > b) && (c != 0); // 先计算括号和!,再&&

九、表达式(Expression)

定义

由变量、常量、运算符和方法调用组成的代码片段,最终返回一个值。

类型转换规则

(1)自动类型提升:运算时小类型自动转为大类型。

int a = 10;
double b = 3.5;
double c = a + b; // int→double,结果为13.5

(2)强制类型转换:大类型→小类型需显式转换。

double d = 10.5;
int i = (int) d; // i=10(截断小数部分)

十、示例代码

public class OperatorsDemo {
    public static void main(String[] args) {
        // 算术运算符
        int a = 10, b = 3;
        System.out.println(a / b); // 3(整数除法)
        System.out.println(a % b); // 1

        // 逻辑运算符
        boolean flag1 = true, flag2 = false;
        System.out.println(flag1 && flag2); // false
        System.out.println(flag1 || flag2); // true

        // 位运算符
        int x = 0b1010; // 10
        int y = x << 1; // 20(二进制10100)
        System.out.println(y);

        // 三元运算符
        int max = (a > b) ? a : b; // max=10
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值