Java 赋值运算符
赋值运算
- 当"="两侧数据类型不一致时,可以使用默认类型转换或使用强制类型转换进行处理
- 注意:可以将整形常量直接赋值给byte, short, char等类型变量,而不需要进行强制的类型转换,只要不超出其表示范围即可
整数的表示方式有很多
eg.
byte b = 125;
是可行的
"="(赋值,将A赋值给B)一定要和**"=="**(判断,A等于B?)区分开
类型转换
Java数据类型转换分为自动类型转换和强制类型转换
-
自动类型转换:byte, short ← int
eg.short S = 108;
long ← int
eg.long L = 108;
小的数据赋给范围更大的变量 -
强制类型转换:
大的数据赋给范围小的变量
eg.int i = 128L;
(可能丢失精度,会报错)
强制处理方式:int i = (int) 128L;
代码验证
示例1:int转变为byte, long
public class TestTypeConvert {
public static void main(String[] args) {
byte b = 127;
int i = 129;
long longNum = i; //此时为绝对安全的赋值,即便两侧数据类型不一致,也会发生自动类型转化
}
}
示例2:long转变为int
编译器报错,存在精度丢失:
/*
编译器只检查语法
运行器才负责运算
*/
public class TestTypeConvert {
public static void main(String[] args) {
byte b = 127;
int i = 129;
long longNum = i;
i = longNum;//编译错误,存在精度丢失(long变为int)
}
}
解决办法:
public class TestTypeConvert {
public static void main(String[] args) {
byte b = 127;
int i = 129;
long longNum = i;
i = (int) longNum;//进行强制转换即可正常运行
}
}
示例3:double转变为float
public class TestTypeConvert {
public static void main(String[] args) {
//float f = 123.123;编译错误,存在double to float精度丢失
float f = 123.123f;//解决
}
}
示例4:double与float的运算
public class TestTypeConvert {
public static void main(String[] args) {
float f = 123.123f
//f = f + 1.2;编译错误,存在double to float精度丢失
//f = (float) f + 1.2;编译错误,float只作用于了f
f = (float) (f + 1.2);//整体强制转换为float,成功
}
}
示例5:long型转变为double
public class TestTypeConvert {
public static void main(String[] args) {
byte b = 127;
int i = 129;
long longNum = i;
double doubleNum = longNum;//此时是相对安全的转换
}
}
示例6:long型转变为float
public class TestTypeConvert {
public static void main(String[] args) {
byte b = 127;
int i = 129;
long longNum = i;
double doubleNum = longNum;
float floatNum = longNum;
}
}
表达式的类型
参与运算时就有表达式。
- byte, char和short型参与运算时自动提升为int型
- 对于表达式:
如果一个操作数为long型,则整个表达式提升为long型
如果一个操作数为float型,则整个表达式提升为float型
如果一个操作数为double型,则整个表达式提升为double型
一个表达式的最终类型是参与运算的最高级别的数据的类型
括号与运算符的优先级
- 运算符有优先级,优先级高的运算符先进行运算
- 括号可以改变默认的优先级,同时提升代码的可读性
多用括号!
自测题
- 4
- 3
- 20
- 优先级高的先处理,优先级低的后处理
- 36(15 + 21)、66(22 * 3)、25(18 + 2 + 5)、3(2 + 1)、12、12
- 合法、少括号、少括号、表达错误(2(4)?)
- 8
- 8
- "="即为赋值运算符
- 83