Java运算符基础知识

运算符是Java编程中实现数据运算、逻辑判断的核心语法元素,掌握各类运算符的规则和特性,是编写正确、高效代码的基础。以下梳理Java中常用运算符的核心知识点:

一、算术运算符

算术运算符用于基本的数值运算,核心包括+(加)、-(减)、*(乘)、/(除)、%(取余),使用时需注意以下规则:

  1. 除法运算/不能以0作为除数 ,否则会抛出ArithmeticException(算术异常,属于非受查异常);
  2. 取余运算%
    • 结果符号由被除数(第一个数) 决定,与除数符号无关:
      • 7 % 3 = 17 % -3 = 1(被除数7为正,结果为正)
      • -7 % 3 = -1-7 % -3 = -1(被除数-7为负,结果为负)
    • 支持小数取余,例如7.5 % 2.0 = 1.5
  3. 自增++/自减--
    • 分为前置(++a/--a)和后置(a++/a--),前置先改变变量值再参与运算,后置先参与运算再改变变量值;
    • 特殊场景:a = a++ 执行后,a的值不会变化(底层因局部变量表与操作数栈的取值规则导致,赋值时优先使用运算前的原始值)。

二、比较运算符

比较运算符(><>=<===!=)用于判断两个数值的大小/相等关系,核心特性:

  • 运算结果仅为truefalse(布尔类型),不会返回0或1(区别于C/C++等语言)。

三、位运算符

位运算符针对数值的二进制位进行操作,适用于底层运算优化:

  1. 按位与&:对应二进制位全为1时结果为1,否则为0;
  2. 按位或|:对应二进制位有1时结果为1,否则为0;
  3. 按位异或^:对应二进制位不同时结果为1,相同时为0(可理解为"找不同");
  4. 按位取反~:对二进制位逐位取反(~a = -a - 1)。

四、逻辑运算符

逻辑运算符用于布尔值的逻辑判断,核心包括&&(短路与)、||(短路或)、!(逻辑非):

  1. 短路求值特性:
    • &&:左侧为false时,右侧表达式直接跳过执行;
    • ||:左侧为true时,右侧表达式直接跳过执行;
  2. 注意区分:&|若用于布尔值判断,不支持短路求值(无论左侧结果如何,右侧都会执行)。

五、移位运算符(了解)

移位运算符针对二进制位进行位移操作,可简化乘除运算:

  1. 左移<<:二进制位向左移动,右侧补0,效果等价于"乘以2的n次方"(a << n = a * 2ⁿ);
  2. 右移>>:二进制位向右移动,左侧补符号位(正数补0,负数补1),效果等价于"除以2的n次方"(a >> n = a / 2ⁿ);
  3. 无符号右移>>>:二进制位向右移动,左侧始终补0(仅对正数有效,负数移位后会变为正数)。

六、三目运算符

三目运算符(条件 ? 表达式1 : 表达式2)是简化的分支判断语法:

  • 执行逻辑:条件为true时执行表达式1,为false时执行表达式2;
  • 结果需赋值或使用(不能单独作为语句执行),例如int max = a > b ? a : b

总结

  1. Java算术运算符中,取余%结果符号由被除数决定,除法不可除以0;
  2. 逻辑运算符&&/||支持短路求值,&/|(布尔场景)不支持;
  3. 移位运算符可简化乘除运算,三目运算符是分支判断的简洁写法。
相关推荐
唐青枫1 天前
Java JDBC 实战指南:从 Connection 到事务和连接池
java
一个做软件开发的牛马1 天前
MyBatis-Plus 从零实战:完整搭建可运行 Demo,BaseMapper 零 SQL、Wrapper 条件构造、分页插件与代码生成器详解
java·后端
用户3721574261351 天前
Java 处理 PDF 图片:提取 PDF 中的图片,并压缩 PDF 图片体积
java
用户3721574261351 天前
Java 打印 Word 文档:从基础打印到高级设置
java
用户3521802454752 天前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
东坡白菜2 天前
破局全栈:一个前端开发的Java入门实战记录(1)
java·全栈
唐青枫2 天前
Java Tomcat 实战指南:从 Servlet 容器到 Spring Boot 部署
java
wsaaaqqq2 天前
roudan:自由选择实体、灵活操作数据、快速写入数据库的 Java 框架
java
plainGeekDev2 天前
null 判断 → Kotlin 可空类型
android·java·kotlin
糖拌西瓜皮2 天前
Java开发者视角:深入理解Node.js异步编程模型
java·后端·node.js