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

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

http://www.lryc.cn/news/24700.html

相关文章:

  • 开发一个会员管理系统
  • 华为OD机试题【找出通过车辆最多颜色】用 C++ 进行编码 (2023.Q1)
  • 如何根据子网掩码计算出网络前缀(prefix)
  • 【FATE联邦学习】Fateboard的使用
  • 解决vue3没有this造成的无法使用vue2
  • 百度前端二面vue面试题指南
  • 【备战面试】每日10道面试题打卡-Day1
  • 服务器重启后jar包自动重启
  • Ubuntu 交叉编译工具链安装
  • Vue3中ref、reactive、toRef、toRefs基本用法和区别
  • python hash 不一致踩坑总结
  • qt5.15 快速安装 国内源
  • JavaScript 对象
  • 数据库设计三大范式
  • cesium学习记录02-vue项目中cesium的配置与使用
  • 【微服务】-认识微服务
  • 容器的线程安全性
  • 如何用Postman测试整套接口?测试流程是什么?
  • 【批处理脚本】-2.1-测试IP连接命令ping
  • 百度“文心一言”携手酷开科技,实现AI智能领域新突破!
  • Elasticsearch索引全生命周期管理一网打尽
  • MySQL的SELECT
  • conda 搭建tensorflow-GPU和pycharm以及VS2022 软件环境配置
  • HACKTHEBOX——Teacher
  • 干货| Vue小程序开发技术原理
  • unity-web端h5记录
  • 基于部标JT808的车载视频监控需求与EasyCVR视频融合平台解决方案设计
  • Grafana邮件及告警配置
  • Springboot Java多线程操作本地文件,加读写锁,阻塞的线程等待运行中的线程执行完再查询并写入
  • WebRTC拥塞控制算法——GCC介绍