【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻
文章目录
- Java 运算符:在计算与逻辑之中追寻编程的哲理
- 1.前言
- 2. 算术运算符
- 2.1 基本四则运算符:加减乘除(+ - * / %)
- 2.2 除法与取余
- 2.3 增量运算符(++ --)
- 2.4 自增/自减运算符
- 3. 关系运算符
- 3.1 关系运算符
- 4. 逻辑运算符(重点)
- 4.1 逻辑与 &&
- 4.2 逻辑或 ||
- 4.3 逻辑非 !
- 4.4 短路求值
- 5. 位运算符
- 5.1 按位与 &
- 5.2 按位或 |
- 5.3 按位取反 ~
- 5.4 按位异或 ^
- 6. 移位运算符(了解)
- 6.1 左移 << : 最左侧位不要,最右侧补 0
- 6.2 右移 >> : 最右侧位不要,左侧补符号位
- 6.3 无符号右移 >>> : 最右侧位不要,左侧补 0
- 六、条件运算符
- 6.1 什么是条件运算符?
- 七、运算符的优先级
- 八、总结与展望
Java 运算符:在计算与逻辑之中追寻编程的哲理
💬 欢迎讨论:如果你在阅读过程中有任何疑问或想要进一步探讨的内容,欢迎在评论区留言!我们一起学习、一起成长。
👍 点赞、收藏与分享:如果你觉得这篇文章对你有帮助,记得点赞、收藏并分享给更多想了解 Java 编程的朋友!
🚀 继续学习之旅:今天,我们将继续深入 Java 编程的核心基础,介绍运算符,这些是每个学习 Java 的人都需要掌握的基本概念,后续我们将继续深入其他更高级的内容。
1.前言
在本篇文章中,我们将详细介绍 Java 中的运算符。运算符是构建程序的基石之一,它们决定了数据如何进行计算与转换。通过掌握 Java 中的各种运算符,你将能够在编程中灵活运用它们,编写出高效且简洁的代码。
Java 提供了丰富的运算符,涵盖了从简单的算术运算到复杂的位运算、逻辑运算等多个方面,掌握它们是每位 Java 程序员的必修课。
2. 算术运算符
2.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
System.out.println(a % b); // 0 --> 计算a除以b后的余数
注意:
- 都是二元运算符,使用时必须要有左右两个操作数
int结果是整数类型,并且会向下取整。
2.2 除法与取余
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); // 1.5
- 做除法和取模时,右操作数不能为0:
int a = 1;
int b = 0;
System.out.println(a / b); // 会抛出异常:ArithmeticException: / by zero
%不仅可以对整数取模,也可以对double类型取模,但其实木有啥意义:
System.out.println(11.5 % 2.0); // 1.5
2.3 增量运算符(++ --)
int a = 1;
a += 2; // 相当于 a = a + 2
System.out.println(a); // 输出:3a = 1;
a -= 1; // 相当于 a = a - 1
System.out.println(a); // 输出:0a += 3; // 相当于 a = a + 3
System.out.println(a); // 输出:3a /= 3; // 相当于 a = a / 3
System.out.println(a); // 输出:1
注意: 只有变量才能使用增量运算符,常量不能使用。
特别注意:
a += 1.2;//合法的,但是结果是a+1,说明+=会自己先隐式转换
a = a + 1.2;//不合法,大类型转换小类型必须显示转换
2.4 自增/自减运算符
int a = 1;
System.out.println(++a); // 输出:2 --> 先自增,再打印
System.out.println(a++); // 输出:2 --> 先打印,再自增
注意:
- 如果是自增(
++)或自减(--),操作的是变量的值,会先增减再返回或先返回再增减,具体看前置还是后置,这部分C语言已经讲过很多了,就不赘述了。
3. 关系运算符
3.1 关系运算符
关系运算符主要有六个:==、!=、>、<、>=、<=,其计算结果是 true 或 false。
int a = 10;
int b = 20;
System.out.println(a == b); // false
System.out.println(a != b); // true
System.out.println(a > b); // false
System.out.println(a < b); // true
System.out.println(a >= b); // false
System.out.println(a <= b); // true
注意:
-
关系运算符的结果通常用于控制判断,判断条件是否成立。
-
如果使用
==比较对象时,需要确保对象的内容相等,而不是地址相等。
4. 逻辑运算符(重点)
4.1 逻辑与 &&
语法规则:表达式1 && 表达式2,左右表达式必须是 boolean 类型的结果。
相当于现实生活中的例子,比如:如果是学生,并且带有学生证才可以享受半票。
两个表达式都真,结果才是真,只要有一个是假,结果就是假。
| 表达式1 | 表达式2 | 结果 |
|---|---|---|
| 真 | 真 | 真 |
| 真 | 假 | 假 |
| 假 | 真 | 假 |
| 假 | 假 | 假 |
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); // 左为假 且 右为假,则结果为假
4.2 逻辑或 ||
语法规则:表达式1 || 表达式2,左右表达式必须是 boolean 类型的结果。
相当于现实生活中的例子,比如:买房子交钱,全款或者 按揭都可以,如果全款或者按揭,房子就是你的,否则站一边去。
| 表达式1 | 表达式2 | 结果 |
|---|---|---|
| 真 | 真 | 真 |
| 真 | 假 | 真 |
| 假 | 真 | 真 |
| 假 | 假 | 假 |
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); // 左为假 且 右为假,则结果为假
注意: 左右表达式至少有一个为真,则结果为真。
4.3 逻辑非 !
语法规则:! 表达式,取反。
| 表达式 | 结果 |
|---|---|
| 真 | 假 |
| 假 | 真 |
int a = 1;
System.out.println(!(a == 1)); // a == 1 为 true,取反则为 false
System.out.println(!(a == 1)); // a == 1 为 true,取反则为 true
4.4 短路求值
&& 和 || 遵循短路求值的规则。
System.out.println(10 > 20 && 10 / 0 == 0); // 打印 false
System.out.println(10 > 20 || 10 / 0 == 0); // 打印 true
注意:
- 对于
&&,如果左边表达式为 false,则右边表达式无需执行。 - 对于
||,如果左边表达式为 true,则右边表达式无需执行。
5. 位运算符
Java 中数据操作的最小单位是字节,而数据操作的最小单位是比特位。字节是最小的存储单位,每个字节是由8个二进制位组成的,多个字节组合在一起可以表示不同和不同的数据。
位运算符主要有:&、|、^。除这三种运算符外,其余都是二元运算符。
5.1 按位与 &
如果两个二进制位都为 1,则结果为 1,否则结果为 0。
int a = 10;
int b = 20;
System.out.println(a & b); // 输出 30
进行按位运算,需要先把 10 和 20 转成二进制,分别为 1010 和 10100。
| 10 的二进制 | 20 的二进制 | 0 的二进制 |
|---|---|---|
| 00001010 | 00010100 | 00000000 |

5.2 按位或 |
如果两个二进制位有一个为 1,则结果为 1,否则结果为 0。
int a = 10;
int b = 20;
System.out.println(a | b); // 输出 30

运算方式和按位与类似。
注意: 当 & 和 | 的操作数为整数(int, short, long, byte) 的时候, 表示按位运算, 当操作数为 boolean 的时候, 表示逻辑运算.
5.3 按位取反 ~
如果该位为 1,则该位置为 0,如果该位为 0,则该位置为 1。
int a = 0xF; // 十六进制数 0F,二进制是 1111
System.out.printf("%x\n", ~a); // 输出 1111 的按位取反
5.4 按位异或 ^
如果两个二进制位相同,则结果为 0,相异则结果为 1。
int a = 0x1;
int b = 0x1;
System.out.printf("%x\n", a ^ b); // 输出 0
注意: 如果两个数相同,则异或的结果为 0。
6. 移位运算符(了解)
移位运算符有三个:<<、>>、>>>,都是二元运算符,且是按照二进制位来进行移位运算的。
6.1 左移 << : 最左侧位不要,最右侧补 0
int a = 0x10;
System.out.println("%x\n", a << 1); // 输出结果(注意,是十六进制打印的)
注意: 向左移位,剩余的是符号位,所以正数左移可能会编程负数。
6.2 右移 >> : 最右侧位不要,左侧补符号位
int a = 0x10;
System.out.println("%x\n", a >> 1); // 输出结果:10
int b = 0xffff0000;
System.out.println("%x\n", b >> 1); // 输出结果:7fff8000
6.3 无符号右移 >>> : 最右侧位不要,左侧补 0
int a = 0xFFFFFFF;
System.out.println("%x\n", a >>> 1); // 输出结果:ffffffff
注意:
- 左移 1 位,相当于原数 * 2 的 N 次方。
- 右移 N 位,相当于原数 / 2 的 N 次方。
- 由于计算机的补码表示,符号位移时,计算方法不完全相同,某些代码修正后的移位运算在使用时需要注意。
- 移动负数位或者移位位数过大都没有意义.
六、条件运算符
6.1 什么是条件运算符?
条件运算符是 Java 中的三目运算符,它用于简化条件判断。其基本语法为:
条件表达式 ? 表达式1 : 表达式2;
如果条件表达式为 true,则返回表达式 1 的值;否则,返回表达式 2 的值。
int a = 10;
int b = 20;
int max = (a > b) ? a : b;
System.out.println(max); // 输出:20
注意:
- 表达式2和表达式3的结果要是同类型的,除非能发生类型隐式类型转换
- 表达式不能单独存在,其产生的结果必须要被使用
七、运算符的优先级
在一条表达式中,各个运算符可以混合使用进行运算,但是运算符的优先级不同,比如:* 和 / 的优先级要高于 + 和 -,有些运算符下低不注意,可能就会造成很大的麻烦。
// 求a和b和的平均值
int a = 10;
int b = 20;
int c = a + (b - a) >> 1;
System.out.println(c);
上述表达式中,由于 + 的优先级高于 >>,因此先和 b-a 的结果做加法,整体为 20,最后再进行右移,因此结果为 10。
修改如下:
// 求a和b的平均值
int a = 10;
int b = 20;
int c = a + ((b - a) >> 1);
System.out.println(c);
注意: 运算符之间是有优先级的。具体的规则我们不必记,在可能存在歧义的代码中加上括号即可。
八、总结与展望
本文详细介绍了 Java 中的各种运算符,包括算术运算符、关系运算符、逻辑运算符、位运算符、移位运算符、条件运算符以及运算符的优先级。掌握这些运算符能够帮助你更高效地进行编程并优化程序的运行效率。
在未来的文章中,我们将继续深入 Java 编程的其他方面,帮助你逐步成为 Java 编程高手。如果你有任何疑问,欢迎在评论区留言,我们一起讨论、一起进步!
以上就是关于【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻的内容啦,各位大佬有什么问题欢迎在评论区指正,或者私信我也是可以的啦,您的支持是我创作的最大动力!❤️

相关文章:
【Java篇】算术如诗,逻辑似梦:Java 编程中的运算符探寻
文章目录 Java 运算符:在计算与逻辑之中追寻编程的哲理1.前言2. 算术运算符2.1 基本四则运算符:加减乘除( - * / %)2.2 除法与取余2.3 增量运算符( --)2.4 自增/自减运算符 3. 关系运算符3.1 关系运算符 4.…...
Docker小游戏 | 使用Docker部署DOS游戏合集
Docker小游戏 | 使用Docker部署DOS游戏合集 前言项目介绍项目简介项目预览二、系统要求环境要求环境检查Docker版本检查检查操作系统版本三、部署dos-games网页小游戏下载镜像创建容器检查容器状态检查服务端口检查容器日志安全设置四、访问DOS游戏网页五、进阶玩法下载游戏拷贝…...
【大模型系列篇】国产开源大模型DeepSeek-V3技术报告解析
DeepSeek-V3技术报告 目录 DeepSeek-V3技术报告 1. 摘要 2. 引言 3. DeepSeek V3 架构 3.1 基础架构 3.1.1. 多头潜在注意力 3.1.2. DeepSeekMoE和无辅助损失的负载均衡 3.2 多令牌预测 4. 基础设施 4.1 计算集群 4.2 训练框架 4.2.1. DualPipe算法与计算通信协同优…...
双足机器狗开发:Rider - Pi
双足机器狗开发:Rider - Pi https://github.com/YahboomTechnology/Rider-Pi-Robot 项目介绍 Rider - Pi是一款为开发者、教育工作者和机器人爱好者设计的桌面双轮腿式机器人,它基于树莓派CM4核心模块构建,具备多种先进功能和特点: 硬件特性 核心模块:采用树莓派CM4核…...
以商业思维框架为帆,驭创业浪潮前行
创业者踏入商海,如同航海家奔赴未知海域,需有清晰的思维罗盘指引方向。图中“为什么—用什么—怎么做—何人做—投入产出”的商业框架,正是创业者破解商业谜题的密钥,从需求洞察到落地执行,为创业之路铺就逻辑基石。 …...
基于单片机的智慧音乐播放系统研究
标题:基于单片机的智慧音乐播放系统研究 内容:1.摘要 随着科技的飞速发展,人们对音乐播放系统的智能化和个性化需求日益增长。本研究的目的是设计并实现一个基于单片机的智慧音乐播放系统。采用单片机作为核心控制单元,结合音频解码模块、存储模块和人机…...
ApoorvCTF Rust语言逆向实战
上周参加了国外的比赛,名称叫:ApoorvCTF 看一下老外的比赛跟我们有什么不同,然后我根据国内比赛对比发现,他们考点还是很有意思的,反正都是逆向,哈哈哈 Rusty Vault 题目描述: In the h…...
Mysql回表查询、索引覆盖等概念
参考:【mysql】MySQL中的回表查询、索引覆盖、索引下推、谓词下推_mysql回表-CSDN博客 【一】回表查询 【1】索引的存储形式 在InnoDB存储引擎中,根据索引的存储形式,又可以分为以下两种: 分类含义特点聚集索引必须有࿰…...
Ubuntu20.04本地配置IsaacLab 4.2.0的G1训练环境(二):训练与推理
Ubuntu20.04本地配置IsaacLab4 4.2.0的G1训练环境(二):训练与推理 训练推理 写在前面,本文档的实现需要IsaacLab的成功安装,可参考(一)。 训练 在IsaacLab目录下,isaaclab的conda虚…...
《实战AI智能体》深度解析Deepseek可以做什么?
一、Deepseek平台功能全景图 Deepseek作为新一代人工智能开发平台,通过整合多项核心技术能力,构建了覆盖多领域的AI服务体系。该平台不仅为终端用户提供智能化解决方案,更为开发者群体打造了高效的技术支撑平台,形成了完整的AI应用开发生态。 二、核心功能模块解析 2.1 智…...
Android 仿 DeepSeek 思考效果:逐字显示 AI 生成内容,支持加粗、颜色,复制内容
最近特别火的非AI莫属了,对我们高级搬运工太友好了,不管是网页端还是APP端,输入你要问的问题,都会逐字给你显示出来,有的还会加粗,这种效果看着不错,今天就带大家一起来实现。有啥更好的建议请在…...
联合索引关于In和范围查询影响索引使用的情况分析
索引类型 1、unique ,唯一索引 2、normal,普通索引 3、fulltext, 全文索引 4、spatial,空间索引 样例 三个字段的联合索引,走一个字段是key_len是5,三个是15. 联合索引关于 使用in是不影响后续列 范围查询大于或小于…...
八点八数字科技:AI数字人引领智慧文旅新时代
在数字化浪潮席卷全球的今天,八点八数字科技凭借其领先的AI数字人技术,正在为文旅行业带来一场前所未有的变革。作为全球领先的IP智能体服务商,八点八数字科技通过自主研发的AI数字人全息舱、数字人一体机等创新产品,为智慧文旅注…...
python绘图之组合图表
组合图表(也称为多子图或多面板图表)是一种将多个图表组合在一起的可视化方式,主要用于同时展示多个相关的数据集或数据维度。本节我们学习使用python绘制组合图表 import matplotlib.pyplot as plt import numpy as np# 生成随机数据 x np.…...
pytest框架 核心知识的系统复习
1. pytest 介绍 是什么:Python 最流行的单元测试框架之一,支持复杂的功能测试和插件扩展。 优点: 语法简洁(用 assert 替代 self.assertEqual)。 自动发现测试用例。 丰富的插件生态(如失败重试、并发执…...
【人工智能】实现【DeepSeek】使用【Anything LLM】并使用本地知识库回答!本地部署告别服务器崩溃的烦恼!
本地知识库回答不准确(Anything LLM + Ollama ) 很多动手能力强的人根据网上的教程,部署了自己的本地知识库。但是发现知识库回答的不准确,甚至答非所问。 先看部署知识库的对比效果,本地大模型为deepseek1.5b 配置为 Anything LLM + Ollama,知识库内容为两篇手机公司文…...
RV1126+FFMPEG多路码流监控项目
一.项目介绍: 本项目采用的是易百纳RV1126开发板和CMOS摄像头,使用的推流框架是FFMPEG开源项目。这个项目的工作流程如下(如上图):通过采集摄像头的VI模块,再通过硬件编码VENC模块进行H264/H265的编码压缩,并把压缩后的…...
人工智能之数学基础:对线性代数中逆矩阵的思考?
本文重点 逆矩阵是线性代数中的一个重要概念,它在线性方程组、矩阵方程、动态系统、密码学、经济学和金融学以及计算机图形学等领域都有广泛的应用。通过了解逆矩阵的定义、性质、计算方法和应用,我们可以更好地理解和应用线性代数知识,解决各种实际问题。 关于逆矩阵的思…...
计算机网络(1) 网络通信基础,协议介绍,通信框架
网络结构模式 C/S-----客户端和服务器 B/S -----浏览器服务器 MAC地址 每一个网卡都拥有独一无二的48位串行号,也即MAC地址,也叫做物理地址、硬件地址或者是局域网地址 MAC地址表示为12个16进制数 如00-16-EA-AE-3C-40 (每一个数可以用四个…...
【音视频】ffplay常用命令
一、 ffplay常用命令 -x width:强制显示宽度-y height:强制显示高度 强制以 640*360的宽高显示 ffplay 2.mp4 -x 640 -y 360 效果如下 -fs 全屏显示 ffplay -fs 2.mp4效果如下: -an 禁用音频(不播放声音)-vn 禁…...
使用 AIStor、MLflow 和 KServe 将模型部署到 Kubernetes
在之前几篇关于 MLOps 工具的文章中,我展示了有多少流行的 MLOps 工具跟踪与模型训练实验相关的指标。我还展示了他们如何使用 MinIO 来存储作为模型训练管道一部分的非结构化数据。但是,一个好的 MLOps 工具应该做的不仅仅是管理您的实验、数据集和模型…...
NO.26十六届蓝桥杯备战|字符数组七道练习|islower|isupper|tolower|toupper|strstr(C++)
P5733 【深基6.例1】自动修正 - 洛谷 小写字母 - 32 大写字母 大写字母 32 小写字母 #include <bits/stdc.h> using namespace std;const int N 110; char a[N] { 0 };int main() {ios::sync_with_stdio(false);cin.tie(nullptr);cin >> a;int i 0;while (a…...
数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南
文章目录 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南ChatGPTKimi腾讯元宝DeepSeek 数据安全VS创作自由:ChatGPT与国产AI工具隐私管理对比——论文党程序员必看的避坑指南 产品隐私设置操作路径隐私协议ChatGPT…...
【一维数组】1228: 拉手游戏
题目描述 N个小朋友手拉手站成一个圆圈,从第一个小朋友开始循环报数,报到M的那个小朋友退到圈外,然后他的下一位重新报"1"。这样继续下去,直到最后只剩下一个小朋友,他原来站在什么位置上呢? 输…...
【C++】析构函数与虚析构函数区别
虚析构函数和析构函数是C中面向对象编程的重要概念,尤其是在处理继承和多态时。 析构函数 析构函数(Destructor)是一种特殊的成员函数,在对象的生命周期结束时自动被调用,用于执行清理工作,比如释放分配给…...
乐鑫打造全球首款 PSA Certified Level 2 RISC-V 芯片
乐鑫科技 (688018.SH) 荣幸宣布 ESP32-C6 于 2025 年 2 月 20 日获得 PSA Certified Level 2 认证。这一重要突破使 ESP32-C6 成为全球首款基于 RISC-V 架构获此认证的芯片,体现了乐鑫致力于为全球客户提供安全可靠、性能卓越的物联网解决方案的坚定承诺。 PSA 安全…...
Flink深入浅出之03:状态、窗口、checkpoint、两阶段提交
Flink是一个有状态的流,👅一起深入了解这个有状态的流 3️⃣ 目标 掌握State知识掌握Flink三种State Backend掌握Flink checkpoint和savepoint原理了解Flink的重启策略checkpointtwo phase commit保证E-O语义 4️⃣ 要点 📖 1. Flink的St…...
DeepSeek 助力 Vue3 开发:打造丝滑的表格(Table)示例3: 行选择
前言:哈喽,大家好,今天给大家分享一篇文章!并提供具体代码帮助大家深入理解,彻底掌握!创作不易,如果能帮助到大家或者给大家一些灵感和启发,欢迎收藏关注哦 💕 目录 Deep…...
【微信小程序】uniapp开发微信小程序
uniapp开发微信小程序 1、上拉加载 下拉刷新 import { onReachBottom, onPullDownRefresh } from dcloudio/uni-app;配置允许下拉刷新: {"path" : "pages/pet/pet","style" : {"navigationBarTitleText" : ""…...
Django下防御Race Condition
目录 漏洞原因 环境搭建 复现 A.无锁无事务时的竞争攻击 B.无锁有事务时的竞争攻击 防御 A.悲观锁加事务防御 B.乐观锁加事务防御 总结 漏洞原因 Race Condition 发生在多个执行实体(如线程、进程)同时访问共享资源时,由于执行顺序…...
