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)。这种简约的设计使得它成为添加…...
SkyWalking 10.2.0 SWCK 配置过程
SkyWalking 10.2.0 & SWCK 配置过程 skywalking oap-server & ui 使用Docker安装在K8S集群以外,K8S集群中的微服务使用initContainer按命名空间将skywalking-java-agent注入到业务容器中。 SWCK有整套的解决方案,全安装在K8S群集中。 具体可参…...

C++初阶-list的底层
目录 1.std::list实现的所有代码 2.list的简单介绍 2.1实现list的类 2.2_list_iterator的实现 2.2.1_list_iterator实现的原因和好处 2.2.2_list_iterator实现 2.3_list_node的实现 2.3.1. 避免递归的模板依赖 2.3.2. 内存布局一致性 2.3.3. 类型安全的替代方案 2.3.…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
FastAPI 教程:从入门到实践
FastAPI 是一个现代、快速(高性能)的 Web 框架,用于构建 API,支持 Python 3.6。它基于标准 Python 类型提示,易于学习且功能强大。以下是一个完整的 FastAPI 入门教程,涵盖从环境搭建到创建并运行一个简单的…...
Linux简单的操作
ls ls 查看当前目录 ll 查看详细内容 ls -a 查看所有的内容 ls --help 查看方法文档 pwd pwd 查看当前路径 cd cd 转路径 cd .. 转上一级路径 cd 名 转换路径 …...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

ios苹果系统,js 滑动屏幕、锚定无效
现象:window.addEventListener监听touch无效,划不动屏幕,但是代码逻辑都有执行到。 scrollIntoView也无效。 原因:这是因为 iOS 的触摸事件处理机制和 touch-action: none 的设置有关。ios有太多得交互动作,从而会影响…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...

逻辑回归暴力训练预测金融欺诈
简述 「使用逻辑回归暴力预测金融欺诈,并不断增加特征维度持续测试」的做法,体现了一种逐步建模与迭代验证的实验思路,在金融欺诈检测中非常有价值,本文作为一篇回顾性记录了早年间公司给某行做反欺诈预测用到的技术和思路。百度…...