一、 类型转换
为什么需要类型转换?
原因:开发中会存在不同类型的变量或者数据复制给其他类型的变量,也存在不同类型的数据一起运算,其结果类型要确定下来。
自动类型转换
原理:小范围类型可以直接复制给大范围类型的变量
文章图片
char赋值的字符如果赋值给int类型变量,这个变量存储的是该字符的ASCII码值。
表达式的自动类型转换
含义:在表达式(表达式就是运算式子)中,小范围类型的变量会自动提升成大范围运算。表达式的运算顺序是从左到右的。
结论:表达式的最终结果数据类型是由表达式的中最大字节大小的数据类型决定的,最大类型是什么结果数据就是什么。
注意:byte short char 在表达式中是直接升级成int类型来运算的
面试笔试题:
byte b1 = 21;
byte b2 = 22;//idea会报错,右边是int类型却复制给byte类型,会出现数据缺省。
byte b3 = b1 + b2;//正确写法
int b3 = b1 + b2;
【Java-类型转换、常用运算符总结】强制类型转换
含义:大范围类型的变量或者数据不能直接赋值给小范围类型的变量,否则报错!必须进行强制类型转换才可以。
格式: 数据类型 变量 = (数据类型)其他类型的变量/数据
int a = 1500;
byte b = (byte)a;
注意:强制类型转换可能出现数据丢失,浮点型类型的变量或者数据强制转换成整型,保留整数部分返回的,小数部分直接不要了。
强制类型转换底层原理:
文章图片
二、运算符
基本算数运算符
文章图片
+符号做连接符
场景:+符号与字符串一起运算时,充当连接符,连接后的结果还是一个字符串。与变量一起运算时,会输出字符串和变量里面的值连在一起。
识别技巧:能算则算,不能算大家连在一起。
自增自减运算符
文章图片
注意事项:放在变量前面和后面的区别不一样(和c语言一样)
文章图片
拓展案例:
System.out.println("-----------拓展案例(可以了解和参考)--------------");
int k = 3;
int p = 5;
// k3 4 5 4
// p5 4 3 4
// rs3+5-4+ 4- 5+4 + 2
int rs = k++ + ++k - --p + p-- - k-- + ++p + 2;
System.out.println(k);
// 4
System.out.println(p);
// 4
System.out.println(rs);
// 9
赋值运算符
基本的赋值运算符就是"=",从右往左的进行赋值。
下图是扩展赋值运算符:
文章图片
扩展赋值运算符都隐含了强制类型转换。
byte b1 = 2;
byte b2 = 3;b1 += b就等价于 byte b3 = (byte)(b1+b2)
关系运算符
对数据进行条件判断的符号,返回一个比较的布尔类型结果(false,true)
文章图片
逻辑运算符
多个条件的布尔结果放在一起运算,最终返回一个布尔结果
文章图片
还有特殊的短路与/或运算符:不用两边都执行,逻辑与/或无论左边是false还是true,右边都要执行。
文章图片
三元运算符
格式:条件表达式?值1:值2;
执行流程:首先计算条件表达式的值,如果值为true返回值1,反之返回值2。
注意,可以多层嵌套:
System.out.println("-------------拓展知识-------------");
//这是从三个整数值找出最大值的案例
int rsMax1 = i > j ? (i > k ? i : k) : (j > k ? j : k);
System.out.println(rsMax1);
运算符优先级
运算符存在谁先谁后执行的情况:
文章图片
注意:
1、()优先级最高
2、*/ 高于 +-
3、特别要注意的是:&& 优先级高于||,&优先级高于||,一定要先运算&和&&符号
推荐阅读
- ubuntu|Ubuntu 安装配置
- 性能调优及MyBatis开启batch模式
- Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的()
- 某课 java全栈工程师(从java后端到全栈,高级电商全栈系统大课)
- 编程语言|程序员最讨厌的11句话 | 每日趣闻
- 人工智能|要么到岗,要么离职!马斯克(特斯拉「远程办公」到此结束)
- mysql|SpringBoot + MyBatis + MySQL 实现读写分离
- springcloud|Hystrix快速入门
- SpringCloud|【SpringCloud】10-Nacos服务注册与配置中心