当前位置: 首页 > news >正文

3.Java运算符大揭秘:从算术到逻辑,一篇搞懂所有重点!

目录

一、什么是运算符?

二、算术运算符

1. 基本四则运算:+ - * / %

2. 增量运算符:+= -= *= %=

3. 自增/自减:++ --

三、关系运算符:判断“大小/相等”

四、逻辑运算符:判断“真假组合”

1. 逻辑与 &&

2. 逻辑或 ||

3. 逻辑非 !

4. 短路求值(&&和||的特性)

五、类型提升:运算时的“自动升级”

总结:运算符核心要点速记


作为刚入门Java的小白,最近啃完了运算符这块的知识点,结合笔记,整理出这篇博客。帮你快速理清Java运算符的核心内容~

一、什么是运算符?

计算机最基本用途之一是执行数学运算,比如:

int a = 10; int b = 20; a + b; // 加法 a < b; // 比较

上述+<就是运算符:对操作数进行操作的符号,不同运算符含义不同。

Java运算符可分为:算术运算符关系运算符逻辑运算符位运算符移位运算符条件运算符等。

二、算术运算符

算术运算符是做数学运算的基础,重点看以下内容:

1. 基本四则运算:+ - * / %

代码示例:

int a = 20; int b = 10; System.out.println(a + b); // 30 System.out.println(a - b); // 10 System.out.println(a * b); // 200 System.out.println(a / b); // 2(int/int结果还是int,向下取整) System.out.println(a % b); // 0(取模,即除法的余数)

⚠️ 注意:

  • 都是二元运算符,必须有两个操作数(左右各一个)。

  • int / int结果还是int,会向下取整(比如3/2=1,不是1.5)。

  • 除法/取模时,右操作数不能为0(否则报错:ArithmeticException: / by zero)。

2. 增量运算符:+= -= *= %=

这类运算符操作完成后,会把结果赋值给左操作数。代码示例:

int a = 1; a += 2; // 相当于 a = a + 2 → a=3 System.out.println(a); // 3 a -= 1; // 相当于 a = a - 1 → a=2 System.out.println(a); // 2 a *= 3; // 相当于 a = a * 3 → a=6 System.out.println(a); // 6 a /= 3; // 相当于 a = a / 3 → a=2 System.out.println(a); // 2 a %= 3; // 相当于 a = a % 3 → a=2 System.out.println(a); // 2

⚠️ 注意:

  • 增量运算符计算时,可以自动处理类型转换(不需要强制类型转换)。

  • 比如double a = 10.4; int b = 10; b += a;会报错(因为a是double,b是int),但b = b + a;也会报错,本质是类型不匹配。

int a = 3; int b = 2; // 在数学中应该是1.5 但是在Java中输出结果为1 会向下取整,即小数点之后全部舍弃掉了 System.out.println(a / b); // 如果要得到数学中的结果,可以使用如下方式 double d = a*1.0 / b; System.out.println(d);

3. 自增/自减:++ --

++给变量+1,--给变量-1。代码示例:

int a = 1; a++; // 后置++:先使用原值,表达式结束后+1 → 此时a=2 System.out.println(a++); // 输出2 // 比如: int a = 1; System.out.println(a++); // 输出1(先输出原值,再+1→a=2) System.out.println(a); // 输出2 ++a; // 前置++:先+1,再使用新值 → a=3 System.out.println(++a); // 输出3(先+1→a=3,再输出) System.out.println(a); // 输出3

⚠️ 注意:

  • 单独使用时,++aa++没区别。

  • 混合使用时:前置++​ 先+1,再使用新值;后置++​ 先使用原值,表达式结束后再+1。

  • 只有变量能用自增/自减,常量不行(因为常量不能被修改)。

三、关系运算符:判断“大小/相等”

关系运算符有6个:== != < > <= >=,结果是truefalse。代码示例:

public class Test { public static void main(String[] args) { int a = 10; //int b = ++a; //先++ 后使用 ++a b = a //b = 11 int b = a++; //先使用 后++ b = a a++ //b = 10 System.out.println(a);//11 System.out.println(b);//10 } }

⚠️ 注意:

  • Java中==表示“相等”,和数学中的“=”不同(数学里=是赋值,==是比较)。

  • 多次判断不能连着写(比如3 < a < 5是错误的,Java不支持这种数学式写法)。

四、逻辑运算符:判断“真假组合”

逻辑运算符用于组合多个布尔表达式,结果也是truefalse。重点看&&(短路与)、||(短路或)、!(逻辑非)。

1. 逻辑与&&

  • 语法:表达式1 && 表达式2

  • 要求:两个表达式都必须是布尔表达式

  • 结果:只有当两个表达式都为true时,结果才为true;否则为false

  • 短路特性:只要第一个表达式为false,就不会执行第二个表达式(因为结果已经确定是false了)。

代码示例:

int a = 1; int b = 2; System.out.println(a == 1 && b == 2); // 左真且右真 → 真 System.out.println(a == 1 && b > 100); // 左真但右假 → 假 System.out.println(a > 100 && b == 2); // 左假 → 直接假(短路,不执行右边)

2. 逻辑或||

  • 语法:表达式1 || 表达式2

  • 要求:两个表达式都必须是布尔表达式

  • 结果:只要有一个表达式为true,结果就为true;否则为false

  • 短路特性:只要第一个表达式为true,就不会执行第二个表达式(因为结果已经确定是true了)。

代码示例:

int a = 1; int b = 2; System.out.println(a == 1 || b == 2); // 左真 → 真(短路,不执行右边) System.out.println(a == 1 || b > 100); // 左真 → 真(短路,不执行右边) System.out.println(a > 100 || b == 2); // 左假但右真 → 真 System.out.println(a > 100 || b > 100); // 左假且右假 → 假

3. 逻辑非!

  • 语法:!表达式

  • 作用:真变假,假变真

  • 要求:表达式必须是布尔表达式

代码示例:

int a = 10; System.out.println(!a); // 错误?不,a是int,不能直接!。应该是: boolean flag = true; System.out.println(!flag); // 假(真变假) flag = false; System.out.println(!flag); // 真(假变真)

4. 短路求值(&&和||的特性)

  • &&:左侧为false,结果一定false,无需计算右侧。

  • ||:左侧为true,结果一定true,无需计算右侧。

代码示例(验证短路):

System.out.println(10 > 20 && 10 / 0 == 0); // 打印false(左侧false,短路,不执行10/0) System.out.println(10 < 20 || 10 / 0 == 0); // 打印true(左侧true,短路,不执行10/0) // 对比非短路的&和|(&和|不支持短路,会执行两边) System.out.println(10 > 20 & 10 / 0 == 0); // 抛出异常(执行了10/0) System.out.println(10 < 20 | 10 / 0 == 0); // 抛出异常(执行了10/0)

五、类型提升:运算时的“自动升级”

不同类型的数据运算时,Java会自动把范围小的类型提升为范围大的类型

示例:

System.out.println(1 + 0.2); // 1是int,0.2是double → int被提升为double → 输出1.2

总结:运算符核心要点速记

  • 算术运算符:+ - * / %是基础,+= -= *= %=方便赋值,++ --要注意前置/后置。

  • 关系运算符:== != < > <= >=结果是布尔值,别和数学符号混淆。

  • 逻辑运算符:&&(短路与)、||(短路或)、!(逻辑非),注意短路特性。

  • 类型提升:运算时小类型自动转大类型,避免类型不匹配错误。

http://www.jsqmd.com/news/803813/

相关文章:

  • DocETL:基于声明式配置与LLM的智能文档处理管道实战指南
  • Tasks.md响应式设计原理:现代Web应用的最佳实践指南
  • 不只是GUI开发:用Qt Creator高效管理你的嵌入式Linux项目资源文件(含.pro文件配置详解)
  • 纯Java实现Gemma大模型推理:轻量化AI集成与JVM生态实践
  • 怎么把维普AI率降到15%以下?硕博严标准的完整降AI路径方案!
  • BaiduPCS-Web终极指南:三步突破百度网盘限速,享受满速下载的快乐
  • 从‘入门’到‘魔改’:伪标签(Pseudo-Label)在PyTorch/TensorFlow中的三种实战写法与调参心得
  • Avogadro 2:免费开源分子建模软件的终极完整指南
  • 构建具备长期记忆与自主行动能力的AI代理系统:双脑架构与金字塔记忆设计
  • 突破性AI图像超分辨率方案:ComfyUI-SUPIR实现专业级画质修复
  • 别让编译器坑了你!聊聊C语言里那个‘善变’的volatile关键字
  • Mac用户必备:Tunnelblick从零到一的安装与实战配置指南
  • ​​【信息科学与工程学】【数据科学】数据科学领域 第十二篇 大数据主要算法01
  • Big Bang:国防级安全合规的云原生平台一站式部署框架
  • WebPShop:终极Photoshop WebP插件完整指南(解决原生支持不足问题)
  • 别再只靠主站了!手把手教你用STM32从站发送CANopen NMT命令(附代码片段)
  • 2026年5月杭州黄金回收靠谱榜单:五家合规机构实测对比 交易无忧选奢响佳 - 生活测评君
  • 构建具备容灾与路由能力的企业级大模型应用架构
  • 如何7天快速掌握Obsidian科研模板:科研工作者的完整知识管理指南
  • FanControl深度解析:5步打造Windows风扇智能控制系统
  • Python Pandas多列合并成一长列(扁平化)
  • Vexip UI高度自定义配置:10个实用技巧完全指南
  • 从CD到5G:Reed-Solomon码如何默默守护你的数字生活
  • 2026年服装真空袋厂家深度选型指南:如何为跨境服装匹配最佳方案? - 博客湾
  • µStreamer性能调优技巧:提升视频流质量与降低延迟的完整指南
  • Moto 用户必看!Ready For 多屏协同保姆级教程,手机电脑无缝互联
  • Linux Idle 调度器的 cpuidle_select:Idle 状态的智能选择
  • 为什么你的电脑需要专业级硬件监控?LibreHardwareMonitor给你答案!
  • 2026年水上城堡乐园品牌推荐榜:室内、户外、景区漂浮等多样类型的梦幻之选! - 速递信息
  • Ascend C NPU域上板调试指南