Java奠基】运算符的讲解与使用
目录
运算符与表达式的使用
算术运算符
隐式转换与强制转换
自增自减运算符
赋值运算符
关系运算符
逻辑运算符
三元运算符
运算符与表达式的使用
运算符是指:对字面量或者变量进行操作的符号。
表达式是指:用运算符把字面量或者变量连接起来,符合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);}
}
相关文章:
Java奠基】运算符的讲解与使用
目录 运算符与表达式的使用 算术运算符 隐式转换与强制转换 自增自减运算符 赋值运算符 关系运算符 逻辑运算符 三元运算符 运算符与表达式的使用 运算符是指:对字面量或者变量进行操作的符号。 表达式是指:用运算符把字面量或者变量连接起来&…...
开发一个会员管理系统
背景 由于现在公司内客户量剧增, 简单的靠电话及笔记本记录,来维护客户有些困难,但又不想去花钱购买那些专业版的会员管理系统,只能自己动手撸一个相对简易的会员系统来使用了。 开发语言及使用技术 后端:java、mys…...
华为OD机试题【找出通过车辆最多颜色】用 C++ 进行编码 (2023.Q1)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧文章目录 最近更新的博客使用说明找出通…...
如何根据子网掩码计算出网络前缀(prefix)
我们知道子网掩码是对IP地址的网络地址的标注。把IP地址中网络地址位设置为1,主机地址位设置为0,得到的就是子网掩码。除了用子网掩码表示IP地址的网络地址和主机地址外,还可以用network prefix(网络前缀),比如192.168.0.1/16,这里的16就是prefix,也就是网络地址位的位…...
【FATE联邦学习】Fateboard的使用
fateboard文档 https://fate.fedai.org/fateboard/ github Fateboard文档 https://github.com/FederatedAI/FATE-Board/blob/master/README-CN.md 背景 Fateboard是FATE框架的任务看板。 在配置FATE时,Fateboard一般是被安装好了的,安装过程查看这里 A…...
解决vue3没有this造成的无法使用vue2
在Vue2项目中可以使用this.$router.push等方法进行路由的跳转,但是在Vue3的setup函数里,并没有this这个概念,因此如何使用路由方法 1.// 在新的vue-router里面尤大加入了一些方法,比如这里代替this的useRouter,具体使用…...
百度前端二面vue面试题指南
Vue 组件间通信有哪几种方式? Vue 组件间通信是面试常考的知识点之一,这题有点类似于开放题,你回答出越多方法当然越加分,表明你对 Vue 掌握的越熟练。Vue 组件间通信只要指以下 3 类通信:父子组件通信、隔代组件通…...
【备战面试】每日10道面试题打卡-Day1
本篇总结的是Java基础知识相关的面试题,后续也会更新其他相关内容 文章目录1、JVM、JRE和JDK的关系?2、Java语言有哪些特点?3、Java和C的区别有哪些?4、Java有哪些数据类型?5、访问修饰符 public、private、protected&…...
服务器重启后jar包自动重启
1、创建自动启动脚本 vi /etc/rc.d/auto_start_script.sh #!/bin/bash #添加本地Java环境,这两句必须添加!不然报错,找不到java命令 export JAVA_HOME/java/jdk1.8.0_181 export PATH$JAVA_HOME/bin:$PATH #系统引导后延迟5秒执行脚本&#x…...
Ubuntu 交叉编译工具链安装
Ubuntu 交叉编译工具链安装 1 交叉编译器安装 ARM 裸机、Uboot 移植、Linux 移植这些都需要在 Ubuntu 下进行编译,编译就需要编译器,我们在第三章“Linux C 编程入门”里面已经讲解了如何在 Liux 进行 C 语言开发,里面使用 GCC 编译器进行代…...
Vue3中ref、reactive、toRef、toRefs基本用法和区别
ref、reactivesetup 函数中默认定义的变量并不是响应式的(即数据变了以后页面不会跟着变),如果想让变量变为响应式的变量,需要使用 ref 和 reactive 函数修饰变量。区别:reactive只能传入对象类型的参数,所…...
python hash 不一致踩坑总结
背景 在线上的一次模型对照实验中,发现对同一个用户进行 hash 分流时,会生成不同的 random 值,导致实验数据污染 原因 参考:https://www.zhihu.com/question/57526436 python 的字符串 hash 算法并不是直接遍历字符串每个字符去…...
qt5.15 快速安装 国内源
1 qt5.15 安装问题 最大的问题就是需要在线下载与安装。即使挂了科学上网,国外的服务器下载速度也还是超级慢。 在网上找了各种解决办法后,终于找到一个快速下载安装的办法。 2 安装器下载 阿里源、清华源都没有Windows的安装器了,在腾讯…...
JavaScript 对象
文章目录JavaScript 对象所有事物都是对象JavaScript 对象访问对象的属性访问对象的方法创建 JavaScript 对象创建直接的实例使用对象构造器创建 JavaScript 对象实例把属性添加到 JavaScript 对象把方法添加到 JavaScript 对象JavaScript 类JavaScript for...in 循环JavaScrip…...
数据库设计三大范式
数据库设计遵循三大范式的理由:在面对复杂是数据库设计的时候,设计数据库要遵循一定的规则,有了一定的规范,这样就可以是自己看起来舒服。 1.第一范式(确保每列保持原子性) 第一范式主要是保证数据表中的每一个字段的…...
cesium学习记录02-vue项目中cesium的配置与使用
1,下载cesium包 (当然,使用npm install cesium安装也是可以的,不过在这里选择下载包放到本地) 官方下载地址 笔者的cesium版本为1.101 2,将下载的Cesium文件夹放到项目里某个位置 这里,笔者将…...
【微服务】-认识微服务
目录 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有啥关…...
容器的线程安全性
(1)c的map、vector等容器以及go中的slice、map都不是线程安全的。 (2)线程安全:多线程访问执行n次每次结果都是确定的 (3)保证线程安全:同步 (4)c同步相关…...
如何用Postman测试整套接口?测试流程是什么?
目录 基于postman测试接口(整套接口测试) 可以解决的问题 开启控制台 单个测试尝试 使用请求结果当参数 打印结果(JSON) 自定义可视化结果 随机参数 测试用例连接 一键测试接口集合 从swagger导入接口 自定义全局变量 总结感谢每一个认真阅读我文章的人!…...
【批处理脚本】-2.1-测试IP连接命令ping
"><--点击返回「批处理BAT从入门到精通」总目录--> 共4页精讲(列举了所有ping的用法,图文并茂,通俗易懂) ping是用来检查网络是否通畅,或者网络连接速度的命令。 目录 1 ping命令解析 1.1 Ping 指定的主机...
百度“文心一言”携手酷开科技,实现AI智能领域新突破!
进入21世纪,AI人工智能一直都是讨论度非常高的话题之一,各行各业的领导者都开始在智能领域进行了初步探索,这也证明了AI人工智能在未来一定会在很大程度上影响我们的生活、工作。 近日,深圳市酷开网络科技股份有限公司成为百度文…...
Elasticsearch索引全生命周期管理一网打尽
文章目录一、索引增删改查1.1、创建索引1.2、查询索引1.3、修改索引1.4、删除索引二、索引关闭和打开2.1、关闭索引2.2、打开索引三、索引收缩和拆分3.1、索引收缩3.2、索引拆分3.2.1、索引拆分的工作过程3.2.2、为什么Elasticsearch不支持增量的重新分片?3.2.3、如…...
MySQL的SELECT
简单SELECT语句我们从最简单的SELECT语句开始起简单的SELECT语句: SELECT {*, column [alias], . } FROM table; 说明: –SELECT列名列表。*表示所有列。 –FROM 提供数据源(表名/视图名) –默认选择所有行例子 查询数据:select * from stude…...
conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置
conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置一、TensorFlow 环境配置安装1. Anaconda下载安装2.conda创建tensorflow环境二、pycharm以及VS2022 环境配置2.1 pycharm 软件安装以及环境配置2.2.1 pycharm 软件安装2.2.2 pycharm 软件conda环境配置2.2 Visual Stu…...
HACKTHEBOX——Teacher
nmapnmap -sV -sC -p- -T4 -oA nmap 10.10.10.153nmap只发现了对外开放了80端口,从http-title看出可能是某个中学的官网http打开网站确实是一个官网,查看每个接口看看有没有可以利用的地方发现了一个接口,/images/5.png,但是响应包…...
干货| Vue小程序开发技术原理
目前应用最广的三大前端框架分别是Vue、 React 和 Angular 。其中,不管是 BAT 大厂,还是创业公司,Vue 都有广泛的应用。如今,再随着移动开发小程序的蓬勃发展,Vue也广泛应用到了小程序开发当中。今天,就来详…...
unity-web端h5记录
title: unity-web端h5记录 categories: Unity3d tags: [unity, web, h5] date: 2023-02-23 17:00:53 comments: false mathjax: true toc: true unity-web端h5记录 前篇 5款常用的html5游戏引擎以及优缺点分析 - https://imgtec.eetrend.com/blog/2022/100557792.htmlUnity We…...
基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
一、方案背景 众所周知,在TSINGSEE青犀视频解决方案中,EasyCVR视频智能融合共享平台主要作为视频汇聚平台使用,不仅能兼容安防标准协议RTSP/Onvif、国标GB28181,互联网直播协议RTMP,私有协议海康SDK、大华SDK…...
Grafana邮件及告警配置
之前部署过服务器的监控组件程序,本在部署时也进行邮件及告警配置,但未进行文档整理,在这儿进行展示。之前用过Grafana的7.*的版本,在进行邮件配置还比较OK,但在配置告警时,太繁琐,还要自己去写…...
Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入1、读写锁2、文件锁3、Synchronized和Lock的区别1、读写锁 在 Spring Boot 中进行多线程操作本地文件并加读写锁可以使用 Java 的 java.nio.file 包中提供的文…...
wordpress文章页设置/产品互联网推广
安装破解教程 1、下载安装包,解压缩并运行安装,选择需要安装的组件 2、阅读软件协议,勾选我接受协议 3、正在安装中,请耐心等待 4、安装成功,点击EXIT INSTALLER退出软件安装向导 5、断开网络连接,以管理员…...
重庆建材网站建设/网站seo综合诊断
现在服务器的大多数是管理员来远程管理的,服务器所在的机房重地闲人免进,既安全,又能使得管理员们足不出户就可以登陆服务器。 远程登录服务器需要在服务器端开启“允许远程连接到此计算机”,右击“我的电脑”--“远程”--勾选“允…...
wordpress 301定向/如何做好网络营销管理
舵机 舵机是一种位置伺服的驱动器,主要是由外壳、电路板、无核心马达、齿轮与位置检测器所构成。其工作原理是由接收机或者单片机发出信号给舵机,其内部有一个基准电路,产生周期为 20ms,宽度为 1.5ms 的基准信号,将获…...
外贸建站网站建设/爱战网关键词
文章内容由「Crossin的编程教室」撰写并授权使用近来知乎上冒出了大把的爬虫案例。这当然好事,具有一定 Python 基础的同学们可以更轻松地找到练手的小案例。不过我不是针对谁,我是说网上绝大多数的爬虫案例,都缺乏可操作性。案例是死的&…...
移动端网站开发最好的环境/免费外链生成器
题目: “666”是一种网络用语,大概是表示某人很厉害、我们很佩服的意思。最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思。如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字“27”…...
wordpress 机器学习/阿里域名购买网站
.yaml文件实际是用YAML语言编写的,YAML简述。如下 1、语法特点 大小写敏感通过缩进表示层级关系禁止使用tab缩进,只能使用空格键缩进的空格数据不重要,只要相同层级左对齐即可使用#表示注释 2、yaml支持的数据结构有三种:对象、…...