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

初识java(三):运算符

目录一什么是运算符二算术运算符1. 基本四则运算符加减乘除模( - * / %)2.增量运算符 - * %3. ⾃增/⾃减运算符 --三关系运算符四逻辑运算符(重点)1.逻辑与2.逻辑 ||3.逻辑⾮ !4.短路求值五位运算符1. 按位与2. 按位或 | :3. 按位取反~:4. 按位异或^:六移位运算(了解)1.左移2.右移3.⽆符号右移 七条件运算符八运算符的优先级内容概况本文详细介绍了Java中的各类运算符及其使用方法。主要内容包括1算术运算符、-、*、/、%等的使用规则和注意事项2关系运算符、!、、等的布尔值返回特性3逻辑运算符、||、!的运算规则和短路求值特性4位运算符、|、~、^的二进制位操作5移位运算符、、的位移规则6条件运算符?:的三目运算特性。文章还强调了运算符优先级问题建议在复杂表达式中使用括号明确运算顺序。这些运算符是Java编程的基础掌握它们对编写正确高效的程序至关重要。一什么是运算符计算机的最基本的⽤途之⼀就是执⾏数学运算⽐如int a 10; int b 20;a b;a b;上述 和 等就是运算符即对操作数进⾏操作时的符号不同运算符操作的含义不同。 作为⼀⻔计算机语⾔Java也提供了⼀套丰富的运算符来操纵变量。Java中运算符可分为以下算术 运算符( - * /)、关系运算符( )、逻辑运算符、位运算符、移位运算符以及条件运算符等。二算术运算符1. 基本四则运算符加减乘除模( - * / %)代码如下public static void main(String[] args) { int a 20; int b 10; System.out.println(a b); System.out.println(a - b); System.out.println(a * b); System.out.println(a % b); }输出注意1.模运算相当于数学中除法的余数2.都是⼆元运算符使⽤时必须要有左右两个操作数3.int/int结果还是int类型⽽且会向下取整和C语言差不多看代码public static void main(String[] args) { int a 3; int b 2; System.out.println(a / b);//1 }结果和C语言一样整型变量的除法会自动去除小数点保留整数位如果想要得出小数点后面的数字我们需要浮点型来进行计算和C语言也是一样的public static void main(String[] args) { int a 3; int b 2; double d a*1.0 / b; System.out.println(d); }结果4.做除法和取模时右操作数不能为0看代码public static void main(String[] args) { int a 1; int b 0; System.out.println(a / b) }结果会报错5. %不仅可以对整型取模也可以对double类型取模但是没有意义⼀般都是对整型取模的看代码public static void main(String[] args) { System.out.println(11.5 % 2.0); }结果是1.56.两侧操作数类型不⼀致时向类型⼤的提升看代码整型变量1和浮点型变量0.2注意这里会变量提升小的int会提升为double类型的数public static void main(String[] args) { System.out.println(10.2); }结果是1.22.增量运算符 - * %该种类型运算符操作完成后会将操纵的结果赋值给左操作数。和C语言一样看代码public static void main(String[] args) { int a 1; a 2; System.out.println(a); a - 1; System.out.println(a); a * 3; System.out.println(a); a / 3; System.out.println(a); a%3; System.out.println(a); }结果注意增量运算符在计算的时候可以不进⾏强制类型转换double a 10.4;int b 10;b a; // 不会报错b b a; // 此时会编译报错等号右边被提升为了 double 类型放入了int类型所以会报错3. ⾃增/⾃减运算符 --是给变量的值1--是给变量的值-1和C语言一样这里就举例加法减法就不演示了前置(先加1再使用看代码public static void main(String[] args) { int a1; System.out.println(a);//1 System.out.println(a); //2 }结果后置先使用再1看代码public static void main(String[] args) { int a 1; System.out.println(a); System.out.println(a); System.out.println(a); }结果是1 1 2注意• 如果单独使⽤【前置】和【后置】没有任何区别• 如果混合使⽤【前置】先1然后使⽤变量1之后的值【后置】先使⽤变量原来的值 表达式结束时给变量1• 只有变量才能使⽤⾃增/⾃减运算符常量不能使⽤因为常量不允许被修改三关系运算符关系运算符主要有六个 ! 其计算结果是true或者false看代码public static void main(String[] args) { int a 10; int b 20; System.out.println(a b); System.out.println(a ! b); System.out.println(a b); System.out.println(a b); System.out.println(a b); System.out.println(a b); }结果只能是true或者false 注意当需要多次判断时不能连着写比如3a5这是错误的写法只能拆开一个一个写四逻辑运算符(重点)逻辑运算符主要有三个: || !运算结果都是boolean类型。1.逻辑与一句话同为真才是真否则为假1. 语法规则表达式1表达式2左右表达式必须是boolean类型的结果。2. 相当于现实⽣活中的且⽐如如果是学⽣并且带有学⽣证才可以享受半票。3. 两个表达式都为真结果才是真只要有⼀个是假结果就是假。看图代码演示public static void main(String[] args) { 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); }结果2.逻辑 ||一句话同为假才是假否则为真语法规则表达式1||表达式2左右表达式必须是boolean类型的结果。相当于现实⽣活中的或⽐如买房⼦交钱时全款或者按揭都可以如果全款或者按揭房⼦都是 你的否则站⼀边去。看图代码演示public static void main(String[] args) { 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.逻辑⾮ !语法规则! 表达式真变假假变真看图不演示代码了4.短路求值和||遵守短路求值的规则说白了就是当你前面的一个表达式已经可以判断最终的答案的时候后面的也就不会再去判断了看代码public static void main(String[] args) { System.out.println(10 20 10 / 0 0); System.out.println(10 20 || 10 / 0 0); }结果我们都知道,计算10 / 0会导致程序抛出异常但是上⾯的代码却能正常运⾏,说明10 / 0并没有真正被求值.注意:1.对于,如果左侧表达式值为false,则表达式结果⼀定是false,⽆需计算右侧表达式.2.对于||,如果左侧表达式值为true,则表达式结果⼀定是true,⽆需计算右侧表达式.3. 和 |如果表达式结果为boolean时,也表⽰逻辑运算.但与 || 相⽐,它们不⽀持短路求值.看代码public static void main(String[] args) { System.out.println(10 20 10 / 0 0); System.out.println(10 20 | 10 / 0 0); }结果会报错五位运算符Java 中数据存储的最⼩单位是字节⽽数据操作的最⼩单位是⽐特位.字节是最⼩的存储单位每个 字节是由8个⼆进制⽐特位组成的多个字节组合在⼀起可以表⽰各种不同的数据。位运算符主要有四个: | ~ ^除 ~ 是⼀元运算符外其余都是⼆元运算符。位操作表⽰按⼆进制位运算.计算机中都是使⽤⼆进制来表⽰数据的(01构成的序列),按位运算就是在 按照⼆进制位的每⼀位依次进⾏计算.1. 按位与如果两个⼆进制位都是1,则结果为1,否则结果为0一句话概括同为1则为1否则为0这里的内部计算过程我就不解释了和C语言的一模一样原码、反码、补码等看代码public static void main(String[] args) { int a 10; int b 20; System.out.println(a b); }结果是0进⾏按位运算,需要先把10和20转成⼆进制,分别为1010和10100看图2. 按位或 | :如果两个⼆进制位都是0,则结果为0,否则结果为1.一句话同为0则为0否则是1看代码public static void main(String[] args) { int a 10; int b 20; System.out.println(a | b); }结果是30运算⽅式和按位于类似看图注意:当和|的操作数为整数(int,short,long,byte)的时候,表⽰按位运算,当操作数为boolean的 时候,表⽰逻辑运算.3. 按位取反~:如果该位为0则转为1,如果该位为1则转为0这里就不演示了和C语言一样4. 按位异或^:如果两个数字的⼆进制位相同,则结果为0,相异则结果为1一句话相同为0否则为1六移位运算(了解)移位运算符有三个: 都是⼆元运算符且都是按照⼆进制⽐特位来运算的。1.左移最左侧位不要了,最右侧补0(和C语言一样注意向左移位时丢弃的是符号位因此正数左移可能会变成负数。2.右移最右侧位不要了,最左侧补符号位(正数补0,负数补1)3.⽆符号右移 最右侧位不要了,最左侧补0注意:1. 左移1位,相当于原数字*2.左移N位,相当于原数字*2的N次⽅.【针对正数⽽⾔】2. 右移1位,相当于原数字/2.右移N位,相当于原数字/2的N次⽅.【针对正数⽽⾔】3. 由于计算机计算移位效率⾼于计算乘除,当某个代码正好乘除2的N次⽅的时候可以⽤移位运算代 替.【针对正数⽽⾔】4. 移动负数位或者移位位数过⼤都没有意义.思考如果是负数进⾏左移和右移怎么计算结果七条件运算符条件运算符只有⼀个:表达式 1 ? 表达式 2 : 表达式 3当表达式 1 的值为true时,整个表达式的值为 表达式 2 的值;当表达式 1 的值为false时,整个表达式的值为 表达式 3 的值.也是Java中唯⼀的⼀个三⽬运算符,是条件判断语句的简化写法.看代码public static void main(String[] args) { int a 10; int b 20; int max a b ? a : b; System.out.println(max); }结果是20注意1. 表达式2和表达式3的结果要是同类型的除⾮能发⽣类型隐式类型转换看代码public static void main(String[] args) { int a 10; int b 20; int c a b? 1 : 2.0; }结果会报错2. 表达式不能单独存在其产⽣的结果必须要被使⽤。看代码public static void main(String[] args) { int a 10; int b 20; a b? a : b; }结果会报错原因是没有把最终的值放入一个变量里面去:八运算符的优先级在⼀条表达式中各个运算符可以混合起来进⾏运算但是运算符的优先级不同⽐如*和/的优先 级要⾼于和-有些情况下稍不注意可能就会造成很⼤的⿇烦注意运算符之间是有优先级的.具体的规则我们不必记忆.在可能存在歧义的代码中加上括号即可以上就是全部内容了

相关文章:

初识java(三):运算符

目录 一:什么是运算符 二:算术运算符 1. 基本四则运算符:加减乘除模( - * / %) 2.增量运算符 - * % 3. ⾃增/⾃减运算符 -- 三:关系运算符 四:逻辑运算符(重点) 1.逻辑与&& 2.逻辑 || …...

EasyRules:轻量级规则引擎的实战入门

1. 为什么你需要了解EasyRules? 如果你是一名开发者,肯定遇到过这样的场景:业务逻辑越来越复杂,代码里充斥着大量的if-else嵌套,每次修改都要小心翼翼,生怕影响其他逻辑。我曾经维护过一个用户积分系统&…...

HoRain云--PHP安全插入MySQL数据指南

🎬 HoRain 云小助手:个人主页 ⛺️生活的理想,就是为了理想的生活! ⛳️ 推荐 前些天发现了一个超棒的服务器购买网站,性价比超高,大内存超划算!忍不住分享一下给大家。点击跳转到网站。 目录 ⛳️ 推荐 …...

如何安全导出浏览器Cookie:本地化工具的完整使用教程

如何安全导出浏览器Cookie:本地化工具的完整使用教程 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 你是否曾需要将浏览器Cookie导出到…...

利用 JiuwenClaw AgentTeam 打造自动化研发团队

利用 JiuwenClaw AgentTeam 打造自动化研发团队 本文介绍如何通过 JiuwenClaw AgentTeam 构建自动化研发团队,实现字幕软件开发、AtomGit Issue/PR 智能处理与飞书文档同步。 目录 JiuwenClaw 平台概述 系统架构预置智能体类型 什么是 AgentTeams飞书群中添加机器人…...

AI时代就业真相:小白程序员如何抓住大模型机遇,收藏这份必看指南!

智联招聘数据显示,AI短期内替代部分岗位,但新增岗位同样显著。编辑、翻译等白领岗位需求缩减,而AI工程师、数据标注师等需求激增。初级职位衰减,中级与高级职位增长,企业招聘更看重软技能与AI应用能力。建议关注新质生…...

别再死记硬背了!通过eNSP搭建WLAN,一次搞懂AC+AP架构中的VLAN、CAPWAP和业务转发

从零构建企业级WLAN:ACAP架构中的关键技术解析与实战 在数字化转型浪潮中,无线网络已从简单的"能上网"演变为支撑业务运营的关键基础设施。对于网络工程师而言,理解ACAP架构背后的设计哲学,远比记住配置命令更为重要。本…...

转转前端周刊第194期: 裁员潮将持续,直到我们学会发掘 AI 的商业价值

转转前端周刊本刊意在将整理业界精华文章给大家,期望大家一起打开视野1、裁员潮将持续,直到我们学会发掘 AI 的商业价值本文以亲历者视角切入 AI 裁员潮的现实焦虑,剖析了从 Coinbase 到 Square 等一系列"AI 裁员"事件背后的商业逻…...

5个关键步骤让zotero-pdf-translate翻译功能重新工作:完整解决方案指南

5个关键步骤让zotero-pdf-translate翻译功能重新工作:完整解决方案指南 【免费下载链接】zotero-pdf-translate Translate PDF, EPub, webpage, metadata, annotations, notes to the target language. Support 20 translate services. 项目地址: https://gitcode…...

Beyond Compare 5完全激活指南:3种简单方法告别30天试用限制

Beyond Compare 5完全激活指南:3种简单方法告别30天试用限制 【免费下载链接】BCompare_Keygen Keygen for BCompare 5 项目地址: https://gitcode.com/gh_mirrors/bc/BCompare_Keygen 你是否正在使用Beyond Compare 5这款强大的文件对比工具,却因…...

从数据焦虑到数字资产:WeChatExporter如何重塑你的微信记忆管理

从数据焦虑到数字资产:WeChatExporter如何重塑你的微信记忆管理 【免费下载链接】WeChatExporter 一个可以快速导出、查看你的微信聊天记录的工具 项目地址: https://gitcode.com/gh_mirrors/wec/WeChatExporter 你是否曾因手机存储空间不足而不得不删除珍贵…...

PS2021神经滤镜离线包保姆级安装指南(附文件夹显示与路径详解)

PS2021神经滤镜离线包安装全流程实战手册 第一次打开Photoshop 2021的神经滤镜功能时,那个漫长的下载进度条简直让人崩溃。特别是当网络环境不稳定时,下载失败的概率直线上升。其实Adobe官方提供了完整的离线安装方案,只是隐藏得比较深——就…...

Java程序开发第七课

1. Java基础入门 Java特点:跨平台(JVM)、面向对象、健壮性(强类型、垃圾回收)。JDK、JRE、JVM关系: JDK (开发工具包) JRE 开发工具 (javac, java&#x…...

Pinecone示例库实战指南:从向量数据库原理到RAG应用开发

1. 项目概述:Pinecone示例库的深度探索 如果你正在寻找一个能让你快速上手向量数据库和现代AI应用开发的“实战训练营”,那么Pinecone官方的 pinecone-io/examples 仓库绝对是一个不容错过的宝藏。这个仓库远不止是一个简单的代码合集,它更…...

从DesignCon 2011看EDA技术演进:高速链路、低功耗与3D-IC设计启示

1. 从一场行业盛会看电子设计的未来风向每年年初,硅谷的心脏地带——加州圣克拉拉,都会迎来一场电子设计自动化(EDA)与半导体设计领域的年度盛事:DesignCon。对于像我这样在硬件设计领域摸爬滚打了十几年的工程师来说&…...

基于Hammerspoon的macOS光标高亮定位工具实现与优化

1. 项目概述:一个让你不再“找光标”的效率神器你有没有过这样的经历?在27寸甚至更大的显示器上,或者是在多屏工作环境中,眼睛在密密麻麻的代码、文档和浏览器标签之间快速扫视,突然,那个小小的鼠标光标“消…...

分形超材料实现电磁波绕障传输:原理、实验与射频应用

1. 项目概述:让信号“穿墙”的隐身斗篷如果你看过《星际迷航》,肯定对克林贡人或罗慕伦人的隐形装置印象深刻,它能让整艘飞船从雷达上消失。虽然我们还没法让宏观物体真正“隐形”,但在电磁波的世界里,让信号“无视”一…...

终极图形化方案:Applite如何让Mac软件管理变得简单快速

终极图形化方案:Applite如何让Mac软件管理变得简单快速 【免费下载链接】Applite User-friendly GUI macOS application for Homebrew Casks 项目地址: https://gitcode.com/gh_mirrors/ap/Applite 还在为Mac上的软件安装、更新和卸载而烦恼吗?Ap…...

Godot 4.x ECS插件GECS:数据驱动架构提升游戏性能与可维护性

1. 项目概述:GECS,为Godot 4.x注入ECS架构之力如果你正在用Godot开发游戏,尤其是那种实体数量多、交互逻辑复杂的项目,比如RTS、模拟经营或者一个满屏敌人的弹幕游戏,你很可能已经感受到了传统面向对象(OOP…...

如何快速解包Godot游戏资源:3分钟掌握PCK文件提取技巧

如何快速解包Godot游戏资源:3分钟掌握PCK文件提取技巧 【免费下载链接】godot-unpacker godot .pck unpacker 项目地址: https://gitcode.com/gh_mirrors/go/godot-unpacker 你是否曾经遇到过想要查看Godot游戏内部资源却无从下手的困境?那些神秘…...

Helm 2到Helm 3迁移实战:深入解析helm-2to3插件原理与操作指南

1. 项目概述与背景 如果你和我一样,在Kubernetes生态里摸爬滚打了几年,那你一定对Helm这个“包管理器”又爱又恨。爱的是它用声明式的Chart把复杂的应用部署变得像 helm install 一样简单;恨的是版本升级带来的“阵痛”,尤其是从…...

从‘方波变形记’聊起:为什么你的高速信号需要Tx EQ?一个给嵌入式软件/FPGA工程师的通俗图解

从‘方波变形记’聊起:为什么你的高速信号需要Tx EQ? 想象一下,你正在观看一场高清直播,画面突然出现马赛克;或者传输重要数据时,系统频繁报错。这些问题的根源,可能就藏在信号传输的微观世界里…...

告别虚拟机!Windows 11下用Conda一键安装GNU Radio 3.10(附国内镜像加速)

Windows 11下用Conda极速部署GNU Radio 3.10全攻略 在软件无线电(SDR)领域,GNU Radio一直是开源工具链中的标杆。但许多Windows用户在初次接触时,往往被复杂的依赖关系和繁琐的安装过程劝退。虚拟机卡顿、版本兼容性问题、依赖冲突…...

AutoResearchClaw:基于LLM的自动化研究管线,从想法到论文的工程化实践

1. 项目概述:从“聊个想法”到“生成论文”的自动化研究革命如果你是一名科研工作者、研究生,或者任何需要产出高质量学术内容的人,你肯定经历过这样的痛苦:一个绝妙的研究想法在脑海中诞生,但随之而来的是海量的文献调…...

深度清理工具openclaw-uninstaller:跨平台卸载与Node.js生态清理指南

1. 项目概述:为什么我们需要一个专门的卸载工具?在软件开发和日常使用中,卸载一个应用程序听起来像是一个简单的“删除”操作,但实际情况往往复杂得多。尤其是那些功能强大、深度集成到系统中的工具,比如涉及3D重建、A…...

基于React+TypeScript+Tailwind的ChatGPT应用UI模板开发指南

1. 项目概述:一个为ChatGPT应用量身定制的UI模板如果你正在开发一个基于ChatGPT或类似大语言模型的Web应用,无论是客服机器人、智能写作助手,还是企业内部的知识问答工具,那么你大概率会遇到一个绕不开的难题:如何快速…...

Onyx:基于Next.js 14的全栈MVP模板,集成Supabase与现代化工具链

1. 项目概述:Onyx,一个开箱即用的全栈Next.js 14 MVP模板如果你正在寻找一个能让你在几天内,而不是几周内,就启动一个现代化、功能齐全的Web应用原型的起点,那么Onyx很可能就是你需要的那个“瑞士军刀”。这不是一个简…...

AI技能gate-of-oss:智能海巡GitHub,高效开源项目选型

1. 项目概述:一个帮你“海巡”GitHub的AI技能在软件开发这个行当里,我敢说,几乎每个开发者都经历过这样的时刻:为了解决一个具体问题,或者想给项目引入一个新功能,一头扎进GitHub的汪洋大海,试图…...

PIM架构如何优化LLM推理中的内存墙问题

1. PIM架构核心原理与LLM推理瓶颈在传统冯诺依曼架构中,数据需要在处理器和内存之间频繁搬运,这种"内存墙"问题在大型语言模型(LLM)推理场景中尤为突出。处理内存计算(PIM)技术的革命性在于将计算单元直接嵌入内存控制器附近,通过近…...

vLLM Semantic Router:基于信号驱动的LLM智能路由架构与生产实践

1. 项目概述:为什么我们需要一个“智能”的LLM路由器?在当前的LLM应用开发中,我们正面临一个甜蜜的烦恼:模型太多了。从闭源的GPT-4、Claude,到开源的Llama、Qwen、DeepSeek,再到各种针对特定任务微调的小模…...