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

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支持以下关系运算符:

  1. 等于 (==):检查两个操作数的值是否相等。如果相等,则条件变为真。
  2. 不等于 (!=):检查两个操作数的值是否不相等。如果不相等,则条件变为真。
  3. 大于 (>):检查左操作数是否大于右操作数。如果是,则条件变为真。
  4. 小于 (<):检查左操作数是否小于右操作数。如果是,则条件变为真。
  5. 大于等于 (>=):检查左操作数是否大于或等于右操作数。如果是,则条件变为真。
  6. 小于等于 (<=):检查左操作数是否小于或等于右操作数。如果是,则条件变为真。

注意:通常经过关系运算符得到的结果是布尔值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支持以下逻辑运算符:

  1. 逻辑与 (&&):当且仅当两个操作数都为true时,结果才为true。
  2. 逻辑或 (||):至少有一个操作数为true,那么结果就是true。
  3. 逻辑非 (!):用于反转操作数的逻辑状态。如果条件为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小白入门到实战应用教程-运算符 上节回顾 在上节的内容中我们了解了变量和基本数据类型的内容&#xff0c;现在回顾一下上节课的内容。 声明变量的语法为&#xff1a; 数据类型 变量名&#xff1b; 其中在java中一共有8中基本数据类型&#xff0c;分别是&#xff1a;b…...

secureCRT同时在所有已打开窗口执行命令、mac-os下使用的SecureCRT版本 以及 SecureCRT一段时间不操作没有响应的问题

一、secureCRT命令行工具一次性同时在所有已打开窗口执行命令 公司的服务器比较多&#xff0c;最近因为opcache&#xff0c;上线发布后&#xff0c;需要重启所有的WEB服务器上的php。目前使用的jenkins发布&#xff0c;不过账号安全问题&#xff0c;给jenkins的账号权限受限不能…...

增材制造与智能制造关系

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

Google Test 学习笔记(简称GTest)

文章目录 一、介绍1.1 介绍1.2 教程 二、使用2.1 基本使用2.1.1 安装GTest &#xff08;下载和编译&#xff09;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…...

不可变集合

定义&#xff1a;就是集合中的内容不可以被修改。 如何获取不可变集合&#xff1f; List、Set、Map类中提供的静态方法of可用来获取不可变集合。 特点&#xff1a;一旦创建完成只可以进行查询&#xff0c;不可以增删改。 细节&#xff1a;Map集合中的of方法只能添加10个键值…...

景区AR导航营销系统:技术解决方案与实施效益分析

随着旅游市场的竞争日益激烈&#xff0c;景区需要不断创新以吸引游客。景区 AR 导航将虚拟画面与现实场景相结合&#xff0c;为游客提供了更加直观、生动的导航服务。对于景区而言&#xff0c;这一创新技术无疑是吸引游客目光、提升景区知名度的有力武器。通过独特的 AR 导航体…...

MATLAB的基础知识

matlab的基本小常识 1. 在每行语句后面加上英文分号表示不在命令行窗口显示运行结果。 a 3; a 5 2. 多行注释快捷键&#xff0c;CTRLR。 3. 取消多行注释&#xff0c;CTRLT。 4. 清空工作区的所有变量使用clear。 5. 清空命令行窗口的所有变量使用clc。 6. clc和clear一起使…...

Redis-高级实战案例

文章目录 Redis集群崩溃时如何保证秒杀系统高可用1. 冗余与备份2. 故障检测与自动切换3. 降级策略4. 数据一致性5. 客户端缓存6. 异常处理与通知7. 测试与演练8. 服务降级与回滚Redis主从切换导致库存同步异常以及超卖问题主从切换导致的库存同步异常原因:解决方案:秒杀链路中…...

d3d12.dll 文件缺失如何解决?五种修复丢失问题的方法

d3d12.dll 文件缺失如何解决&#xff1f;它为什么会不见呢&#xff1f;今天&#xff0c;我们将探讨 d3d12.dll 文件的重要性、原因以及丢失时的解决策略。本文将全面介绍 d3d12.dll 文件&#xff0c;并提供五种修复丢失问题的方法。 d3d12.dll文件是什么的详细介绍 d3d12.dll …...

Linux下如何设置系统定时任务

在Linux系统中&#xff0c;用户可以使用cron工具来设置定时任务。cron是一个守护进程&#xff0c;用于在指定的时间间隔执行指定的命令或脚本。下面是在Linux系统中设置系统定时任务的步骤。 使用crontab命令编辑定时任务列表&#xff1a; crontab -e该命令会打开一个文本编辑…...

【React】JSX 实现列表渲染

文章目录 一、基础语法1. 使用 map() 方法2. key 属性的使用 二、常见错误和注意事项1. 忘记使用 key 属性2. key 属性的选择 三、列表渲染的高级用法1. 渲染嵌套列表2. 条件渲染列表项3. 动态生成组件 四、最佳实践 在 React 开发中&#xff0c;列表渲染是一个非常常见的需求。…...

写一个简单的兼容GET/POST请求的登录接口

本文目录 安装JDK17安装或者更新Intelij Idea 2024SpringBoot生成项目压缩包下载maven&#xff0c;idea添加maven写POST接口浏览器访问GET接口PostMan安装及访问POST接口 安装JDK17 参考&#xff1a;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官网下载&#xff1a;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. 代码实现 题目链接&#xff1a;3227. Vowels Game in a String 1. 解题思路 这一题稍微分析一下之后就会发现&#xff0c;这个游戏有且只有一种情况Bob才能够赢&#xff0c;即原始字符串当中不存在元音字母的情况&…...

树莓派4B从装系统raspbian到vscode远程编程(python)

1、写在前面 前面用的一直是Ubuntu系统&#xff0c;但是遇到一个奇葩的问题&#xff1a; 北通手柄在终端可以正常使用&#xff0c;接收到数据 但在python程序中使用pygame库初始化时总是报错&#xff1a;Invalid device number&#xff0c;检测不到手柄 经过n次重装系统&am…...

vue上传Excel文件并直接点击文件列表进行预览

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

OpenCV 像素操作—证件照换底色详细原理 C++纯手写实现

文章目录 总体步骤1.RGB转HSV2.找出要换的底色3.取反&#xff0c;黑白颠倒4.将原图像的非背景部分复制到新背景上 完整代码1.C纯手写版2.官方API版本 总体步骤 1.RGB转HSV 为什么一定要转为HSV 颜色空间&#xff1f; 将图像从BGR颜色空间转换为HSV颜色空间是因为HSV颜色空间更…...

tinygrad框架简介;MLX框架简介

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

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

[ICLR 2022]How Much Can CLIP Benefit Vision-and-Language Tasks?

论文网址&#xff1a;pdf 英文是纯手打的&#xff01;论文原文的summarizing and paraphrasing。可能会出现难以避免的拼写错误和语法错误&#xff0c;若有发现欢迎评论指正&#xff01;文章偏向于笔记&#xff0c;谨慎食用 目录 1. 心得 2. 论文逐段精读 2.1. Abstract 2…...

el-switch文字内置

el-switch文字内置 效果 vue <div style"color:#ffffff;font-size:14px;float:left;margin-bottom:5px;margin-right:5px;">自动加载</div> <el-switch v-model"value" active-color"#3E99FB" inactive-color"#DCDFE6"…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

新能源汽车智慧充电桩管理方案:新能源充电桩散热问题及消防安全监管方案

随着新能源汽车的快速普及&#xff0c;充电桩作为核心配套设施&#xff0c;其安全性与可靠性备受关注。然而&#xff0c;在高温、高负荷运行环境下&#xff0c;充电桩的散热问题与消防安全隐患日益凸显&#xff0c;成为制约行业发展的关键瓶颈。 如何通过智慧化管理手段优化散…...

Java 加密常用的各种算法及其选择

在数字化时代&#xff0c;数据安全至关重要&#xff0c;Java 作为广泛应用的编程语言&#xff0c;提供了丰富的加密算法来保障数据的保密性、完整性和真实性。了解这些常用加密算法及其适用场景&#xff0c;有助于开发者在不同的业务需求中做出正确的选择。​ 一、对称加密算法…...

HBuilderX安装(uni-app和小程序开发)

下载HBuilderX 访问官方网站&#xff1a;https://www.dcloud.io/hbuilderx.html 根据您的操作系统选择合适版本&#xff1a; Windows版&#xff08;推荐下载标准版&#xff09; Windows系统安装步骤 运行安装程序&#xff1a; 双击下载的.exe安装文件 如果出现安全提示&…...

OpenLayers 分屏对比(地图联动)

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能&#xff0c;和卷帘图层不一样的是&#xff0c;分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...