1.数据类型的转换
1. 为什么要进行类型转换?
- 因为Java要求参与的计算的数据,必须要保证数据类型的一致性
2.自动转换
- 将取值范围小的类型自动转换成取值范围大的类型。
3.强制转换
- 将取值范围大的类型强制转换成取值范围小的类型。
- (1)浮点数转换为整数,可能会数据数据损失精度
- (2)整形转换为小字节类型,可能会造成数据溢出
- (3)boolean不能跟其他数据类型进行类型转换
4.自动转换的转换规则
- byte、short、char–>int–>long–>float–>double
- (自动转换:较小字节的类型隐式转换为较大字节类型)
- (强制转换:将较大字节类型强制转换为较小字节的类型)
2.运算符
- 单目乘除为关系,逻辑三目后赋值。
- 单目运算符:+ – ++ – 等
- 算数单目运算符:* / % + -
- 位移单目运算符:<< >>
- 关系单目运算符:> < >= <= == !=
- 逻辑单目运算符:&& || & | ^
- 三目单目运算符:A > B ? X : Y
- 赋值运算符: =
- 注:在实际的开发中,不需要去记忆运算符的优先级别,也不要刻意的使用运算符的优先级别,对于不清楚优先级的地方使用小括号去进行替代
3.拓展知识点
1.+=符号扩展
- 概念:+= 是一个运算符,只运算一次,并带有强制转换的特点
- 示例:short s = 1;
- s=s+1;//报错(s是short类型,运算时会转换为int,类型不一致没有强制转换会报错)
- s+=1;//s = (short)(s+1);
2.常量和变量的运算
- 示例:byte b1=1; byte b2=2;
- byte b3=1 + 2;(常量在运算时有常量优化机制,在编译前会先计算常量运算的值有没有超过byte类型,在进行赋值)
- byte b4=b1 + b2;(因为是变量进行运算,所以编译时不确定变量的结果为多少,所以会先转换为int类型,但是int类型不能直接赋值给byte类型)