Java奠基】运算符的讲解与使用

news/2024/4/29 4:27:08/文章来源:https://blog.csdn.net/qq_53123067/article/details/129259744

目录

运算符与表达式的使用

算术运算符

隐式转换与强制转换

自增自减运算符

赋值运算符

关系运算符

逻辑运算符

三元运算符


运算符与表达式的使用

运算符是指:对字面量或者变量进行操作的符号。

表达式是指:用运算符把字面量或者变量连接起来,符合java语法的式子就可以称为表达式。

算术运算符

算术运算符包括:加(+)、减(-)、乘(*)、除(\)、取余(%)。

public class Main {public static void main(String[] args) {System.out.println(1+1); // 2System.out.println(2-1); // 1System.out.println(2*4); // 8System.out.println(10/3); // 对整数进行相除,得到的还是整数System.out.println(10%3); // 1System.out.println(10.0/3); // 小数参与计算得到的结果可能不准确}
}

当 " + " 操作中出现字符串时,这个 " + " 是字符串连接符,而不是算术运算符了,会将前后的数据进行拼接,并产生一个新的字符串。

public class Main {public static void main(String[] args) {// 当字符串和数字同时出现时,用 + 表示拼接System.out.println("123"+123);// 当连续出现多个 + 的操作时,且有字符串的话,会先进行算数运算,其次然后拼接System.out.println(10+12+"123"); // 10+12=22 22与123拼接}
}

字符 char 进行 + 的操作时,会把字符通过 ASCII 码表查询到对应的数字再进行计算。

public class Main {public static void main(String[] args) {// 对char进行+操作char A = 'a'; // a在ASCII表中代表的是97int B = 0;System.out.println(A+B); // 97+0还是97}
}

隐式转换与强制转换

数字进行运算时,数据类型不一样是不能进行运算的,需要转成相同类型才能继续运算。而这里需要借助隐式转换和强制转换。

隐式转换:也叫自动类型提升,把取值范围小的数值变成取值范围大的。

public class Main {public static void main(String[] args) {int a = 10;double b = 3.0;System.out.println(a+b); // 将数值小的int 转换成double并参与运算// 注意:byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算byte x = 10;byte y = 20;System.out.println(x+y); // 将byte类型转换成int再进行运算}
}

总结:

取值范围

byte < short < int < long < float < double

转换时机

数据类型不一样,不能进行运算,需要转成一样的才可以进行计算

转换规则

取值范围小的和取值范围大的进行运算,小的会先提升为大的,再进行运算;byte、short、char三种类型的数据在运算的时候,都会直接先提升为int,然后再进行运算。

强制转换:把取值范围大的数值变成取值范围小的。

其格式如下:目标数据类型 变量名 = (目标数据类型)被强转的数据。

public class Main {public static void main(String[] args) {byte b1 = 12;byte b2 = 24;byte result = (byte)(b1+b2);byte result1 = (byte)(b1*10+b2^10); // byte的取值范围为:-128~127System.out.println(result);System.out.println(result1); // 结果就发生错误了,因为要转换的数据过大。}
}

自增自减运算符

符号作用说明
++变量的值加1
--变量的值减1

++和--既可以放在变量的前面,也可以放在变量的后面;无论是放在前面还是后面,单独写一行结果都是一样的。

public class Main {public static void main(String[] args) {int a = 10;a++;System.out.println(a); // 11++a;System.out.println(a); // 12a--;System.out.println(a); // 11--a;System.out.println(a); // 10}
}

当然前置++和--与后置++和--,在实际运算中是有一些区别的,一般后置用的比较多,如下:

public class Main {public static void main(String[] args) {int a = 10;int b = a++; // 先用后加System.out.println(a); // 11System.out.println(b); // 10int x = 10;int y = ++x; // 先加后用System.out.println(x); // 11System.out.println(y); // 11}
}

赋值运算符

符号作用说明
=赋值int a = 10,将10赋值给变量a
+=加后赋值a+=b,将a+b的值给a
-=减后赋值a-=b,将a-b的值给a
*=乘后赋值a*=b,将a*b的值给a
/=除后赋值a/=b,将a/b的商给a
%=取余后赋值a%=b,将a/b的余数给a

注意:扩展的赋值运算符隐含了强制的类型转换。

public class Main {public static void main(String[] args) {int a=10,b=20;a+=b;b/=a;System.out.println(a); // a = a+b=30System.out.println(b); // b = b / a = 2/3 = 0}
}

关系运算符

关系运算符也叫比较运算符,其主要分类如下:

符号说明
==a==b,判断a和b的值是否相等,成立为true,不成立为false
!=a!=b,判断a和b的值是否不相等,成立为true,不成立为false
>a>b,判断a是否大于b,成立为true,不成立为false
>=a>=b,判断a是否大于等于b,成立为true,不成立为false
<a<b,判断a是否小于b,成立为true,不成立为false
<=a<=b,判断a是否小于等于b,成立为true,不成立为false
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("请输入第一个整数:");int i = sc.nextInt();System.out.println("请输入第二个整数:");int j = sc.nextInt();if(i>j){System.out.println("相亲成功!");}else{System.out.println("相亲失败!");}}
}

逻辑运算符

符号作用说明
&逻辑与(且)并且,两边都为真,结果才为真
|逻辑或或者,两边都为假,结果才为假
^逻辑异或相同为false,不同为true
!逻辑非取反
public class Main {public static void main(String[] args) {// 逻辑与System.out.println(true & false); // falseSystem.out.println(true & true); // true// 逻辑或System.out.println(true | false); // trueSystem.out.println(false | false); // false// 逻辑异或System.out.println(true ^ true); // falseSystem.out.println(true ^ false); // true// 逻辑非 System.out.println(!true); // falseSystem.out.println(!false); // true}
}

两种特殊的逻辑运算符—短路运算符

短路与:&&,结果与 & 相同,但有短路效果。

短路或:|| ,结果与 | 相同,但有短路效果。

短路运算符具有短路效果:当左边的表达式能确定最终结果,那么右边便不会再参与运行了

三元运算符

三元运算符也称三元表达式,类似于if-else的简写形式,其基本格式如下:

关系表达式 ? 表达式1 : 表达式2;
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);System.out.println("第一个人的体重:");int i = sc.nextInt();System.out.println("第二个人的体重:");int j = sc.nextInt();String result = i == j ? "体重相同" : "体重不同";System.out.println(result);}
}

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

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

相关文章

使用Geth搭建多节点私有链

使用Geth搭建多节点私有链 步骤 1.编辑初始化配置文件genesis.json {"config": {"chainId": 6668,"homesteadBlock": 0,"eip150Block": 0,"eip150Hash": "0x000000000000000000000000000000000000000000000000000000…

【工具插件类教学】UnityPackageManager私人定制资源工具包

目录 一.UnityPackageManager的介绍 二.package包命名 三.包的布局 四.生成清单文件 五.制作package内功能 六.为您的软件包撰写文档 1.信息的结构 2.文档格式 七.提交上传云端仓库 1.生成程序集文件 2.上传至云端仓库 八.下载使用package包 1.获取包的云端路径 …

Vue3 企业级项目实战:认识 Spring Boot

Vue3 企业级项目实战 - 程序员十三 - 掘金小册Vue3 Element Plus Spring Boot 企业级项目开发&#xff0c;升职加薪&#xff0c;快人一步。。「Vue3 企业级项目实战」由程序员十三撰写&#xff0c;2744人购买https://s.juejin.cn/ds/S2RkR9F/ 越来越流行的 Spring Boot Spr…

NJ+SCU42做Modbus RTU从站

NJSCU42做Modbus RTU从站实验时间&#xff1a;2023.2.28 硬件设备&#xff1a;NJ501-1300&#xff0c;CJ1W-SCU42 软件&#xff1a;Sysmac Studio&#xff0c;Commix串口调试助手 案例简介&#xff1a;发送Modbus RTU命令读取NJ里的数据 1. 系统概述 264 ​ 本次实验使用C…

回暖!“数”说城市烟火气背后

“人间烟火气&#xff0c;最抚凡人心”。在全国各地政策支持以及企业的积极生产运营下&#xff0c;经济、社会、生活各领域正加速回暖&#xff0c;“烟火气”在城市中升腾&#xff0c;信心和希望正在每个人心中燃起。 发展新阶段&#xff0c;高效统筹经济发展和公共安全&#…

[文件操作] File 类的用法和 InputStream, OutputStream 的用法

能吃是不是件幸福的事呢 文章目录前言1. 文件的相关定义2. 文件类型3. Java对文件系统的操作3.1 对文件的基础操作3.2 读文件3.3 写文件前言 从这章开始,我们就开始学文件操作相关的知识了~ 1. 文件的相关定义 1.文件的定义可以从狭义和广义两个方面解释. 狭义: 指硬盘上的文…

进程、线程、协程详解

目录 前言&#xff1a; 一、进程 进程的概念 进程内存空间 二、线程 线程的定义 内核线程 用户线程 内核线程和用户线程的比较 线程的状态 三、协程 协程的定义 协程序相对于线程优势 运用场景 四、线程、协程、进程切换比较 前言&#xff1a; 有时候无法…

原生JS实现拖拽排序

拖拽&#xff08;这两个字看了几遍已经不认识了&#xff09; 说到拖拽&#xff0c;应用场景不可谓不多。无论是打开电脑还是手机&#xff0c;第一眼望去的界面都是可拖拽的&#xff0c;靠拖拽实现APP或者应用的重新布局&#xff0c;或者拖拽文件进行操作文件。 先看效果图&am…

人力资源管理系统

技术&#xff1a;Java、JSP等摘要&#xff1a;在当今的信息化社会&#xff0c;为了更有效率地工作&#xff0c;人们充分利用现在的电子信息技术&#xff0c;在办公室架设起办公服务平台&#xff0c;将人力资源相关信息统一起来管理&#xff0c;帮助管理者有效组织降低成本和加速…

测试2年,当初一起入行的朋友很多月薪20k了,自己却还没过万,到底差在了哪里?

说来奇怪&#xff0c;不管是读书还是工作&#xff0c;都存在一个现象&#xff0c;那就是人比人&#xff0c;比死人。读书的时候&#xff0c;不管是老师还是家长口中&#xff0c;总会有一个“别人家的孩子”。同样&#xff0c;到工作中&#xff0c;领导口中总会有一个“别人的员…

代码随想录算法训练营day46 | 动态规划之背包问题 139.单词拆分

day46139.单词拆分1.确定dp数组以及下标的含义2.确定递推公式3.dp数组如何初始化4.确定遍历顺序5.举例推导dp[i]139.单词拆分 题目链接 解题思路&#xff1a;单词就是物品&#xff0c;字符串s就是背包&#xff0c;单词能否组成字符串s&#xff0c;就是问物品能不能把背包装满。…

【微服务】-认识微服务

目录 1.1 单体、分布式、集群 单体 分布式 集群 1.2 系统架构演变 1.2.1 单体应⽤架构 1.2.2 垂直应⽤架构 1.2.3 分布式架构 1.2.4 SOA架构 1.2.5 微服务架构 1.3 微服务架构介绍 微服务架构的常⻅问题 1.4 SpringCloud介绍 1.4.1 SpringBoot和SpringCloud有啥关…

高压放大器知识科普介绍

高压放大器是一种用于放大高压信号的电子设备&#xff0c;具有高压输出&#xff0c;低噪声&#xff0c;高精度&#xff0c;高稳定性&#xff0c;高可靠性&#xff0c;低功耗&#xff0c;低成本等的优点&#xff0c;所以才被广泛应用在磁场探测、电磁脉冲放大、电磁波放大、电磁…

Arduino IDE启动闪退或者运行中闪退

文章目录一、你中了哪一种&#xff1f;1、安装了不符合规格的库文件2、安装了不符合规范的开发板库文件二、解决方案1、轻方案2、全盘重来Arduino IDE启动闪退或者运行中闪退&#xff0c;出现这样的问题&#xff0c;其实不需要思考了&#xff0c;就是运行库配置的问题&#xff…

(Trie Tree)字典树

&#xff08;Trie Tree&#xff09;字典树 场景&#xff1a;在n个字符串中查找某个字符串。 暴力匹配&#xff0c;时间复杂度为O&#xff08;nm&#xff09;&#xff0c;m为字符串平均长度&#xff0c;效率过低。 字典查找单词"fly"&#xff0c;首先查找’f’,然后…

HACKTHEBOX——Teacher

nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口&#xff0c;从http-title看出可能是某个中学的官网http打开网站确实是一个官网&#xff0c;查看每个接口看看有没有可以利用的地方发现了一个接口&#xff0c;/images/5.png&#xff0c;但是响应包…

【计算机二级python】综合题目

计算机二级python真题 文章目录计算机二级python真题题目一&#xff1a;全球大学排名题目二&#xff1a;红楼梦题目一&#xff1a;全球大学排名 在省略号处填写一行或多行代码&#xff0c;完成如下功能‪‬‪‬‪‬‪‬‪‬‮‬‭‬‪‬‪‬‪‬‪‬‪‬‪‬‮‬‫‬‭‬‪‬‪…

web,h5海康视频接入监控视频流记录三(后台node取流)

前端vue&#xff0c;接入ws视频播放 云台控制 &#xff0c;回放预览&#xff0c;都是需要调对应的海康接口。相当于&#xff0c;点击时&#xff0c;请求后台写好的接口&#xff0c;接口再去请求海康的接口 调用云台控制是&#xff0c;操作一次&#xff0c;不会自己停止&#x…

SpringBoot+Nacos+OpenFeign环境搭建

目录 1.boot方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.测试接口调用 4.常见问题&#xff1a; 1.版本依赖 2.nacos客户端 2.cloud方式nacos与openFeign集成 1.引入依赖 2.添加配置 3.接口定义 4.开启FeignClients客户端 5.远程接口测试 6.Nacos配置中心 1…

【谷粒学院】微信扫码登录(199~206)

199.OAuth2介绍 OAuth2是什么&#xff1f; OAuth2是针对特定问题的一种解决方案 主要可以解决两个问题&#xff1a;开放系统间授权、分布式访问问题 一、OAuth2解决什么问题 1、OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片&#xff0c;云冲印服务需要访问云存储服…