Java小白入门到实战应用教程-运算符详解
Java小白入门到实战应用教程-运算符
上节回顾
在上节的内容中我们了解了变量和基本数据类型的内容,现在回顾一下上节课的内容。
声明变量的语法为:
数据类型 变量名;
其中在java中一共有8中基本数据类型,分别是:byte,short int long float double char boolean。通过不通的基本数据类型可以声明携带不同值的变量。
说明
在本节内容中我们将了解算术运算符和赋值运算符,通过字面意思大家也能get到这两种语法的作用是什么,顾名思义算术运算符是用来计算数值的。对于赋值运算符我们前面学习变量的时候已经用到了一个赋值运算符“=”。
所以赋值运算符的作用就是给变量进行赋值操作的。
正文
算术运算符
算术运算符用在数学表达式中,它们的作用和在数学中的作用一样。下面列出java中所有的算术运算符:
操作符 | 所代表意思 |
---|---|
+ | 加法 - 取两数相加的结果 |
- | 减法 - 取两数相减的结果 |
* | 乘法 - 取两数相乘的结果 |
/ | 除法 - 取两数相除的商值 |
% | 取余 - 取两数相除的余数 |
++ | 自增: 把变量自身值加1,只能用于变量本身 |
– | 自减: 把变量自身值减1,只能用于变量本身 |
//创建一个class类,命名为One//在前面我们提到了,算术运算符的作用是用来计算数值的,在本例子中我们做了两个int型变量相加,因为数值1和2已经赋值给变量a和b了,所有a和b就代表的是数字1,2.所以变量a和b是可以进行计算的。直接进行数字的计算也是可以的。public class One {public static void main(String[] args) {//声明一个int整数的变量a,赋予初始值为1int a = 1;//声明一个int整数的变量b,赋予初始值为1int b = 2;//声明一个int整数的变量c,把a+b的结果赋值给cint c = a + b;//打印一下c的值System.out.println(c);//声明一个int整数的变量d,把2+2的结果赋值给dint d = 2 + 2;//打印一下d的值System.out.println(d);//声明一个int整数的变量e,把b+a的结果赋值给eint e = b - a; //e的结果为1//声明一个int整数的变量f,把b * a的结果赋值给fint f = b * a; //b 乘以 a 即为 2 * 1,所以f的值为2//声明一个int整数的变量g,把b / a的结果赋值给gint g = b / a; //b 除以 a 即为 2 / 1,所以g的值为2//声明一个int整数的变量h,计算3 % 2的值赋给hint h = 3 % 2; //3 除以 2取余数 即为 2 % 1,所以h的值为1System.out.println(h);//做a++操作,++的作用就是将自身进行加1操作a++; //此时a的值就变成了2System.out.println(a);//做b--操作,aa的作用就是将自身进行减1操作b--; //此时b的值就变成了1System.out.println(b);}
}
在上面的代码中,我们进行了算术运算符的应用,其中有两个算术运算符比较有意思,++和–。
这两个符号涉及到先执行和后执行的问题。怎么理解呢,我们直接上例子
public class One {public static void main(String[] args) {int one = 1; //声明一个int型变量one,并赋初始值为1;int two; //声明一个int型变量two//变量one执行++操作;one++; //此时one的值应该变成了2了//变量one再次执行++操作; ++符号可以用在变量名的前面和后面。++one; //此时one的值应该变成了3了System.out.println(one); //打印一下one的值,在控制台应该输出的是3//前面我们看到++可以用在变量前后都可以将本身的值加1,那有什么区别呢?//此时one的值已经为3了。two = one++; //将one++ 赋值给变量two,思考:那么此时变量two的值是多少呢?System.out.println(two); //打印此时two的值,此时two的值应该是3System.out.println(one); //打印此时one的值,此时one的值应该是4//此时one的值已经为4了two = ++one; //将++one 赋值给变量two,思考:那么此时变量two的值是多少呢?System.out.println(two); //打印此时two的值,此时two的值应该是5System.out.println(one); //打印此时one的值,此时one的值应该是5/*通过上面的例子大家也能看出区别了,two = one++; 此时one++的值还是本来的值,然后进行了赋值操作,完了后才做了加1的操作。two = ++one; 此时++one是先做了加1的操作,然后再进行了赋值操作。所以++在变量前面和后面有个区别就是先加 和 后加 的区别。--运算符同样的道理*/}
}
赋值运算符
在java中,所有的赋值运算符整理如下表所示:
操作符号 | 说明 | 解释 |
---|---|---|
= | 赋值运算符,将右侧操作数赋给左侧操作数 | C = A + B将把A + B得到的值赋给C |
+ = | 加和赋值操作符,它把左操作数和右操作数相加赋值给左操作数 | C + = A等价于C = C + A |
- = | 减和赋值操作符,它把左操作数和右操作数相减赋值给左操作数 | C - = A等价于C = C - A |
* = | 乘和赋值操作符,它把左操作数和右操作数相乘赋值给左操作数 | C * = A等价于C = C * A |
/ = | 除和赋值操作符,它把左操作数和右操作数相除赋值给左操作数 | C / = A,C 与 A 同类型时等价于 C = C / A |
(%)= | 取模和赋值操作符,它把左操作数和右操作数取模后赋值给左操作数 | C%= A等价于C = C%A |
<< = | 左移位赋值运算符 | C << = 2等价于C = C << 2 |
>> = | 右移位赋值运算符 | C >> = 2等价于C = C >> 2 |
&= | 按位与赋值运算符 | C&= 2等价于C = C&2 |
^ = | 按位异或赋值操作符 | C ^ = 2等价于C = C ^ 2 |
| = | 按位或赋值操作符 | C | = 2等价于C = C | 2 |
public class One {public static void main(String[] args) {//=int a = 1; // 将1赋值给声明的int型变量aint b = a;//将变量a 赋值给 声明的int型变量b。int c = b + a;//将变量a和变量b相加的值赋值给 左侧声明的变量c// +=a += 1; //将a 和 1相加,然后赋值给变量a// a+=1 和 a = a+1的意思是一样的。}
}
//位运算符放到后面再说
关系运算符
在Java编程语言中,关系运算符用于比较两个值之间的关系,并返回一个布尔值(true或false)。这些运算符经常用于控制流语句(如if语句)中,它们帮助我们根据条件执行不同的代码块。对于控制语句逻辑,放到下一节再将。
Java支持以下关系运算符:
- 等于 (
==
):检查两个操作数的值是否相等。如果相等,则条件变为真。 - 不等于 (
!=
):检查两个操作数的值是否不相等。如果不相等,则条件变为真。 - 大于 (
>
):检查左操作数是否大于右操作数。如果是,则条件变为真。 - 小于 (
<
):检查左操作数是否小于右操作数。如果是,则条件变为真。 - 大于等于 (
>=
):检查左操作数是否大于或等于右操作数。如果是,则条件变为真。 - 小于等于 (
<=
):检查左操作数是否小于或等于右操作数。如果是,则条件变为真。
注意:通常经过关系运算符得到的结果是布尔值boolean,也就是结果是true或者false。
public class One {public static void main(String[] args) {int a = 10;int b = 20;boolean res = a == b;//将a==b的结果赋值给boolean类型的变量resSystem.out.println(res); // 打印一下结果,变量res的值为 false。//我们在变量那一节学到了boolean的变量的值只能是true和false,代表的是真或者假。//而关系运算符也叫可以理解成比较运算符,比如上面的例子 a==b的意思就是,a和b的值是否相等。//其他的关系运算符同理。}
}
逻辑运算符
在Java编程语言中,逻辑运算符用于关系运算符组合或多个布尔值,常常用在条件语句和循环中,以控制程序的流程。
逻辑运算符可以对多个布尔值进行操作,返回一个布尔值的结果。
Java支持以下逻辑运算符:
- 逻辑与 (
&&
):当且仅当两个操作数都为true时,结果才为true。 - 逻辑或 (
||
):至少有一个操作数为true,那么结果就是true。 - 逻辑非 (
!
):用于反转操作数的逻辑状态。如果条件为true,则逻辑非运算符会使其变为false,反之亦然。
值得注意的是,&&
和||
运算符具有“短路”行为:
- 对于
&&
运算符,如果左侧操作数为false,那么整个表达式就已经确定为false,因此不会再去评估右侧的操作数。 - 对于
||
运算符,如果左侧操作数为true,那么整个表达式就已经确定为true,因此不会再去评估右侧的操作数。
public class One {public static void main(String[] args) {//&&:两个操作数都为true,最终的结果才为true,否则为false。boolean a = true && true;System.out.println(a);boolean b = true && false;System.out.println(b);// ||:至少有一个为true,最终的结果为trueboolean c = true || true;System.out.println(c);boolean d = true || false;System.out.println(d);boolean e = false || false;System.out.println(e);}
}
在上面的例子中,我们直接用boolean类型的值进行的。我们结合前面学到的关系运算符再看一个复杂的例子
public class One {public static void main(String[] args) {//&&:两个操作数都为true,最终的结果才为true,否则为false。boolean a = 1 == 1 && 10 > 5;System.out.println(a);//结果为true//解释:&&两边操作数都为true最后的结果才是true,左边1==1是true,右边10>5是true,所以最终的结果是true,然后赋值给变量a,所以a的值为true。boolean b = 1 == 2 && 10 > 5;System.out.println(b);//结果为false// ||:至少有一个为true,最终的结果为trueboolean c = 1 == 1 || 10 < 5;System.out.println(c);//结果为true//解释:&&两边操作数只要有一个为true最后的结果就是true,左边1==1是true,右边10<5是false,所以最终的结果是true,然后赋值给变量c,所以c的值为true。}
}
三元运算符
也叫条件运算符,也叫三目运算符
语法:
变量类型 变量名 = (表达式判断)? 值1 : 值2;
解释:
就是当表达式判断为true时,将值1赋值给声明的变量,否则将值2赋值给变量。
public class One {public static void main(String[] args) {int a = 1 == 1 ? 2 : 3;System.out.println(a);//此时a的值为2//解释:表达式1==1的结果肯定是true,所以三元运算符的最终结果为2,将2赋值给了变量aint b = 1 == 2 ? 2 : 3;System.out.println(a);//此时a的值为3}
}
相关文章:
Java小白入门到实战应用教程-运算符详解
Java小白入门到实战应用教程-运算符 上节回顾 在上节的内容中我们了解了变量和基本数据类型的内容,现在回顾一下上节课的内容。 声明变量的语法为: 数据类型 变量名; 其中在java中一共有8中基本数据类型,分别是:b…...

secureCRT同时在所有已打开窗口执行命令、mac-os下使用的SecureCRT版本 以及 SecureCRT一段时间不操作没有响应的问题
一、secureCRT命令行工具一次性同时在所有已打开窗口执行命令 公司的服务器比较多,最近因为opcache,上线发布后,需要重启所有的WEB服务器上的php。目前使用的jenkins发布,不过账号安全问题,给jenkins的账号权限受限不能…...

增材制造与智能制造关系
在撰写的增材制造技术与装备书籍中有着明确的描述,增材制造是智能制造的典型范例,是智能制造“类”的实例化过程。这种借助于计算机编程面向对象思想的解释可以更全面的理解增材制造和智能制造的关系。增材制造实例具备了智能制造类的属性,智…...

Google Test 学习笔记(简称GTest)
文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest (下载和编译)2.1.2 编写测试2.1.3 运行测试2.1.4 高级特性2.1.5 调试和分析 2.2 源码自带测试用例2.3 TEST 使用2.3.1 TestCase的介绍2.3.2 TEST宏demo1demo2 2.3.3 TEST_F宏2.3…...
不可变集合
定义:就是集合中的内容不可以被修改。 如何获取不可变集合? List、Set、Map类中提供的静态方法of可用来获取不可变集合。 特点:一旦创建完成只可以进行查询,不可以增删改。 细节:Map集合中的of方法只能添加10个键值…...

景区AR导航营销系统:技术解决方案与实施效益分析
随着旅游市场的竞争日益激烈,景区需要不断创新以吸引游客。景区 AR 导航将虚拟画面与现实场景相结合,为游客提供了更加直观、生动的导航服务。对于景区而言,这一创新技术无疑是吸引游客目光、提升景区知名度的有力武器。通过独特的 AR 导航体…...
MATLAB的基础知识
matlab的基本小常识 1. 在每行语句后面加上英文分号表示不在命令行窗口显示运行结果。 a 3; a 5 2. 多行注释快捷键,CTRLR。 3. 取消多行注释,CTRLT。 4. 清空工作区的所有变量使用clear。 5. 清空命令行窗口的所有变量使用clc。 6. clc和clear一起使…...
Redis-高级实战案例
文章目录 Redis集群崩溃时如何保证秒杀系统高可用1. 冗余与备份2. 故障检测与自动切换3. 降级策略4. 数据一致性5. 客户端缓存6. 异常处理与通知7. 测试与演练8. 服务降级与回滚Redis主从切换导致库存同步异常以及超卖问题主从切换导致的库存同步异常原因:解决方案:秒杀链路中…...

d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法
d3d12.dll 文件缺失如何解决?它为什么会不见呢?今天,我们将探讨 d3d12.dll 文件的重要性、原因以及丢失时的解决策略。本文将全面介绍 d3d12.dll 文件,并提供五种修复丢失问题的方法。 d3d12.dll文件是什么的详细介绍 d3d12.dll …...
Linux下如何设置系统定时任务
在Linux系统中,用户可以使用cron工具来设置定时任务。cron是一个守护进程,用于在指定的时间间隔执行指定的命令或脚本。下面是在Linux系统中设置系统定时任务的步骤。 使用crontab命令编辑定时任务列表: crontab -e该命令会打开一个文本编辑…...

【React】JSX 实现列表渲染
文章目录 一、基础语法1. 使用 map() 方法2. key 属性的使用 二、常见错误和注意事项1. 忘记使用 key 属性2. key 属性的选择 三、列表渲染的高级用法1. 渲染嵌套列表2. 条件渲染列表项3. 动态生成组件 四、最佳实践 在 React 开发中,列表渲染是一个非常常见的需求。…...
写一个简单的兼容GET/POST请求的登录接口
本文目录 安装JDK17安装或者更新Intelij Idea 2024SpringBoot生成项目压缩包下载maven,idea添加maven写POST接口浏览器访问GET接口PostMan安装及访问POST接口 安装JDK17 参考:https://blog.csdn.net/tiehou/article/details/129575138 安装或者更新Int…...

【好玩的经典游戏】Docker环境下部署赛车小游戏
【好玩的经典游戏】Docker环境下部署赛车小游戏 一、小游戏介绍1.1 小游戏简介1.2 项目预览二、本次实践介绍2.1 本地环境规划2.2 本次实践介绍三、本地环境检查3.1 安装Docker环境3.2 检查Docker服务状态3.3 检查Docker版本3.4 检查docker compose 版本四、构建容器镜像4.1 下…...

物理机 gogs+jenkins+sonarqube 实现CI/CD
一、部署gogs_0.11.91_linux_amd64.tar.gz gogs官网下载:https://dl.gogs.io/ yum -y install mariadb-serversystemctl start mariadbsystemctl enable mariadbuseradd gittar zxvf gogs_0.11.91_linux_amd64.tar.gzcd gogsmysql -u root -p < scripts/mysql.…...

前端表格解析方法
工具类文件 // fileUtils.tsimport { ref } from vue; import * as xlsx from xlsx;interface RowData {[key: string]: any; }export const tableData ref<RowData[]>([]);export async function handleFileSelect(url: string): Promise<void> {try {const res…...
Leetcode 3227. Vowels Game in a String
Leetcode 3227. Vowels Game in a String 1. 解题思路2. 代码实现 题目链接:3227. Vowels Game in a String 1. 解题思路 这一题稍微分析一下之后就会发现,这个游戏有且只有一种情况Bob才能够赢,即原始字符串当中不存在元音字母的情况&…...

树莓派4B从装系统raspbian到vscode远程编程(python)
1、写在前面 前面用的一直是Ubuntu系统,但是遇到一个奇葩的问题: 北通手柄在终端可以正常使用,接收到数据 但在python程序中使用pygame库初始化时总是报错:Invalid device number,检测不到手柄 经过n次重装系统&am…...

vue上传Excel文件并直接点击文件列表进行预览
本文主要内容:用elementui的Upload 组件上传Excel文件,上传后的列表采用xlsx插件实现点击预览表格内容效果。 在项目中可能会有这样的需求,有很多种方法实现。但是不想要跳转外部地址,所以用了xlsx插件来解析表格,并展…...

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现
文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反,黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间? 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…...

tinygrad框架简介;MLX框架简介
目录 tinygrad框架简介 MLX框架简介 LLaMA编辑 Stable Diffusion编辑 tinygrad框架简介 极简主义与易扩展性 tinygrad 的设计理念是极简主义。与 XLA 类比,如果 XLA 是复杂指令集计算 (CISC),那么 tinygrad 就是精简指令集计算 (RISC)。这种简约的设计使得它成为添加…...

苍穹外卖--缓存菜品
1.问题说明 用户端小程序展示的菜品数据都是通过查询数据库获得,如果用户端访问量比较大,数据库访问压力随之增大 2.实现思路 通过Redis来缓存菜品数据,减少数据库查询操作。 缓存逻辑分析: ①每个分类下的菜品保持一份缓存数据…...
Unit 1 深度强化学习简介
Deep RL Course ——Unit 1 Introduction 从理论和实践层面深入学习深度强化学习。学会使用知名的深度强化学习库,例如 Stable Baselines3、RL Baselines3 Zoo、Sample Factory 和 CleanRL。在独特的环境中训练智能体,比如 SnowballFight、Huggy the Do…...

【分享】推荐一些办公小工具
1、PDF 在线转换 https://smallpdf.com/cn/pdf-tools 推荐理由:大部分的转换软件需要收费,要么功能不齐全,而开会员又用不了几次浪费钱,借用别人的又不安全。 这个网站它不需要登录或下载安装。而且提供的免费功能就能满足日常…...
第7篇:中间件全链路监控与 SQL 性能分析实践
7.1 章节导读 在构建数据库中间件的过程中,可观测性 和 性能分析 是保障系统稳定性与可维护性的核心能力。 特别是在复杂分布式场景中,必须做到: 🔍 追踪每一条 SQL 的生命周期(从入口到数据库执行)&#…...

PHP 8.5 即将发布:管道操作符、强力调试
前不久,PHP宣布了即将在 2025 年 11 月 20 日 正式发布的 PHP 8.5!作为 PHP 语言的又一次重要迭代,PHP 8.5 承诺带来一系列旨在提升代码可读性、健壮性以及开发者效率的改进。而更令人兴奋的是,借助强大的本地开发环境 ServBay&am…...
十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建
【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…...

热门Chrome扩展程序存在明文传输风险,用户隐私安全受威胁
赛门铁克威胁猎手团队最新报告披露,数款拥有数百万活跃用户的Chrome扩展程序正在通过未加密的HTTP连接静默泄露用户敏感数据,严重威胁用户隐私安全。 知名扩展程序存在明文传输风险 尽管宣称提供安全浏览、数据分析或便捷界面等功能,但SEMR…...
React从基础入门到高级实战:React 实战项目 - 项目五:微前端与模块化架构
React 实战项目:微前端与模块化架构 欢迎来到 React 开发教程专栏 的第 30 篇!在前 29 篇文章中,我们从 React 的基础概念逐步深入到高级技巧,涵盖了组件设计、状态管理、路由配置、性能优化和企业级应用等核心内容。这一次&…...

渗透实战PortSwigger Labs指南:自定义标签XSS和SVG XSS利用
阻止除自定义标签之外的所有标签 先输入一些标签测试,说是全部标签都被禁了 除了自定义的 自定义<my-tag onmouseoveralert(xss)> <my-tag idx onfocusalert(document.cookie) tabindex1> onfocus 当元素获得焦点时(如通过点击或键盘导航&…...
raid存储技术
1. 存储技术概念 数据存储架构是对数据存储方式、存储设备及相关组件的组织和规划,涵盖存储系统的布局、数据存储策略等,它明确数据如何存储、管理与访问,为数据的安全、高效使用提供支撑。 由计算机中一组存储设备、控制部件和管理信息调度的…...