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}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/50392.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

三维影像系统PACS源码,图像存储与传输系统,应用于医院中管理医疗设备如CT,MR等产生的医学图像的信息系统

PACS&#xff0c;即图像存储与传输系统&#xff0c;是应用于医院中管理医疗设备如CT&#xff0c;MR等产生的医学图像的信息系统。目标是支持在医院内部所有关于图像的活动&#xff0c;集成了医疗设备&#xff0c;图像存储和分发&#xff0c;数字图像在重要诊断和会诊时的显示&a…

【linux】【设备树】具有 GPIO 控制器和连接器的硬件配置的备树(Device Tree)代码讲解

具有 GPIO 控制器和连接器的硬件配置的备树&#xff08;Device Tree&#xff09;代码讲解 背景 -学习Linux设备树 代码 soc {soc_gpio1: gpio-controller1 {#gpio-cells <2>;};soc_gpio2: gpio-controller2 {#gpio-cells <2>;}; };connector: connector {#gpi…

零侵入零代码零配置全自动接口文档生成可在线调试框架doc-apis它来了!

近期开源了一款全自动零侵入零代码零配置接口文档生成框架doc-apis,实测只要代码符合规范,即可生成多端多语种多格式的接口文档,适合敏捷开发,欢迎大家试用,另外也恳请大家帮忙点一下star,帮助开源项目走得更远,让更多人知道,非常感谢! # 官方地址 | Official website --- **…

OD C卷 - 宽度最小的子矩阵

宽度最小的子矩阵 &#xff08;100&#xff09; 给定一个n行 * m列的矩阵&#xff1b;给定一个k个整数的数组k_list&#xff1b;在n*m的矩阵中找一个宽度最小的子矩阵&#xff0c;该子矩阵包含k_list中所有的整数&#xff1b; 输入描述&#xff1a; 第一行输入n,m 两个整数&am…

Redis的五种数据类型与命令

目录 引言 一 Redis的特性 二 Redis的安装 三 Redis的优点 四 Redis的五种数据类型与命令 五 Redis的配置文件 引言 Redis是什么&#xff1f; Remote Dictionary Service(远程字典服务器) Redis 是一个开源的(BSD许可)的&#xff0c;C语言编写的&#xff0c;高性能的数…

计算机网络实验-RIP配置与分析

前言&#xff1a;本博客仅作记录学习使用&#xff0c;部分图片出自网络&#xff0c;如有侵犯您的权益&#xff0c;请联系删除 一、相关知识 路由信息协议&#xff08;Routing Information Protocol&#xff0c;RIP&#xff09;是一种基于距离向量&#xff08;Distance-Vector&…

unity2D游戏开发06稳定,材质,碰撞器

稳定性 在操控玩家时,我们会发现玩家移动时,摄像头会有抖动,这是摄像机过度精确造成的。 创建名为RoundCameraPos的C#脚本,用Visual Studio打开 代码 using System.Collections; using System.Collections.Generic; using UnityEngine; using Cinemachine;//导入Cinemac…

rust 初探 -- use

rust 初探 – use Package, Crate, 定义 Module use 关键字 作用&#xff1a;将路径引入到作用域内&#xff0c;其依旧遵循私有性规则&#xff0c;也即只用 pub 的部分引入进来才能使用 use crate::front_of_house::hosting; // 绝对路径 // use front_of_house::hosting; …

【Python机器学习】使用Matplotlib注解绘制树形图

通过数据集可以创建树&#xff0c;但是字典的表示形式非常不易于理解&#xff0c;而且直接绘制图形也比较困难。但是通过Matplotlib库可以绘制树形图。 决策树的主要优点就是直观、易于理解&#xff0c;如果不能将其直观的显示出来&#xff0c;就无法发挥其优势。 Matplotlib…

基于JSP、java、Tomcat三者的项目实战--校园交易网(2)登录,注册功能实现

技术支持&#xff1a;JAVA、JSP 服务器&#xff1a;TOMCAT 7.0.86 编程软件&#xff1a;IntelliJ IDEA 2021.1.3 x64 OK&#xff0c;那我们进入正题&#xff0c;随着前面一篇博客的尚未完结基于JSP、java、Tomcat三者的项目实战--校园交易网&#xff08;2&#xff09;登录功能…

微软蓝屏事件:网络安全的多维挑战与应对策略

一、引言 1. 事件概述&#xff1a;微软蓝屏事件的影响与范围 微软蓝屏事件&#xff0c;这一近期震动全球科技界的重大事件&#xff0c;起因于一次看似平常的软件更新。美国电脑安全技术公司“众击”发布的更新包中隐藏着一个致命的“缺陷”&#xff0c;这个缺陷如同潜伏的病毒…

函数图像是如何画出来的(LiveCharts2)

大火的人工智能本质上就是一些简单的函数的组合&#xff0c;比如f(x)kxb&#xff0c;只是可能不只有x,还会x1&#xff0c;x2&#xff0c;…xn&#xff0c;只是维数不同&#xff0c;当维数很多的时候自然就需要方程组才能求解&#xff0c;维数越多自然需要的算力就越多。于是就有…

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

easyExcel 3.x以上版本导入数据后,再把错误信息导出,外加自定义RGB背景色、行高、宽度等

easyExcel 3.x以上版本导入数据后&#xff0c;再把错误信息导出&#xff0c;外加自定义RGB背景色 背景 由于项目中用的easypoi导入的数据量大了&#xff0c;会导致OOM的问题&#xff0c;所以要求更换为easyExcel框架做导入。话不多说&#xff0c;这里只做一个导入的示例&…

DP学习——享元模式

学而时习之&#xff0c;温故而知新。 享元模式 名词解析 有必要解释下“享元”两字&#xff0c;英文原文是flyweight pattern——轻量级模式&#xff0c;但是翻译过来的“享元”两字太牛逼了——褒贬不一&#xff0c;翻译的他妈都不认识。 享元的高雅在于: 享:共享/共用 元:…

VB中如何定义和使用数组

在VB&#xff08;Visual Basic&#xff09;中&#xff0c;数组是一种数据结构&#xff0c;用于存储相同类型的数据项集合。这些数据项可以通过索引&#xff08;通常是整数&#xff09;来访问。VB提供了多种方式来定义和使用数组。 定义数组 在VB中&#xff0c;你可以使用Dim语…

Retrieval-Augmented Evaluation方法评估模型幻觉

测试大模型的幻觉 Factuality prompt 1:建立factuality prompt测试集合 “Factuality prompt”是指用于引导语言模型生成与事实相符的文本的输入提示,它通过提供明确的问题或句子,帮助模型聚焦于生成准确的信息,从而提高生成内容的事实准确性。如果一个factuality promp…

DBeaver Ultimate 22.1.0 连接数据库(MySQL+Mongo+Clickhouse)

前言 继续书接上文 Docker Compose V2 安装常用数据库MySQLMongo&#xff0c;部署安装好之后我本来是找了一个web端的在线连接数据库的工具&#xff0c;但是使用过程中并不丝滑&#xff0c;最终还是选择了使用 DBeaver &#xff0c;然后发现 mongo 还需要许可&#xff0c;又折…

PyQt5 + selenium,自动票务工具,演唱会门票,学习使用

PyQt5 selenium&#xff1b;在damai工具的基础上加入了UI界面&#xff0c;并将应用做了打包工作&#xff0c;主要是方便不会/不想折腾环境的用户使用&#xff0c;抢票的核心代码来自由于原作者不再维护&#xff0c;自己修改了部分代码。 安装教程 解压安装包到任意位置&…

SpringBoot整合elasticsearch-java

一、依赖 系统使用的是ElasticSearch8.2.0 <dependency><groupId>co.elastic.clients</groupId><artifactId>elasticsearch-java</artifactId><version>8.1.0</version> </dependency> 二、配置 1、yml文件配置 elastics…