Java语法学习——类型转换
一、自动类型转换
什么是自动类型转换,为什么要进行自动类型转换?
- 类型范围小的变量,可以直接赋值给类型范围大的变量。
- 为了探究byte类型可以直接赋值给int类型,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo1):
package it.com.type;
public class TypeConversionDemo1 {
public static void main(String[] args) {
// 目标:理解自动转换类型机制。
byte a = 12;
int b = a; // 发生了自动类型转换了
System.out.println(a);
System.out.println(b);
}
}
- 代码运行结果为:
自动类型转换在计算机中的执行原理
自动类型转换的其他形式
二、表达式的自动类型转换
- 在表达式中,小范围类型的变量,会自动转换成表达式中较大的范围的类型,再参与运算。
注意事项:
- 表达式的最终结果类型由表达式中的最高类型决定。
- 在表达式中,byte、short、char是直接转换成int类型参与运算的。
- 为了掌握表达式的自动类型转换机制,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo2):
package it.com.type;
public class TypeConversionDemo2 {
public static void main(String[] args) {
// 目标:掌握表达式的自动类型转换机制。
byte a = 10;
int b = 20;
long c = 30;
long rs = a + b + c;
System.out.println(rs);
double rs2 = a + b + 1.0;
System.out.println(rs2);
byte i = 10;
short j = 30;
//short rs3 = i + j;
int rs3 = i + j;
System.out.println(rs3);
// 面试笔试题
byte b1 = 10;
byte b2 = 80;
//byte b3 = b1 + b2;
int b3 = b1 + b2;
System.out.println(b3);
}
}
- 代码运行结果为:
三、强制类型转换
类型范围大的数据或变量,直接赋值给类型范围小的变量,会报错。
强制类型转换
- 强行将类型范围大的变量、数据赋值给类型范围小的变量。
强制类型转换在计算机中的执行原理
注意事项
- 强制类型转换可能造成数据(丢失)溢出;
- 浮点型强转成整型,直接丢掉小数部分,保留整数部分返回。
- 为了掌握强制类型转换,我们在IDEA里新建一个package(it.com.type),然后在这下面新建一个Java class(TypeConversionDemo3):
package it.com.type;
public class TypeConversionDemo3 {
public static void main(String[] args) {
// 目标:掌握强制类型转换。
int a = 20;
//byte b = a;
// 强制类型转换
byte b = (byte) a; // ALT + ENTER 快速查找报错
System.out.println(a);
System.out.println(b);
int i = 1500;
byte j = (byte) i;
System.out.println(j);
double d = 99.5;
int m = (int) d; // 强制类型转换
System.out.println(m); // 去掉小数部分,保留整数部分
}
}
- 代码运行结果为: