在Java中,基本类型是一种直接存储数据值的变量类型。Java提供了8种基本类型,包括整型、浮点型、字符型和布尔型。
整型基本类型包括:
- byte:1个字节,取值范围为-128到127
- short:2个字节,取值范围为-32768到32767
- int:4个字节,取值范围为-2147483648到2147483647
- long:8个字节,取值范围为-9223372036854775808到9223372036854775807
浮点型基本类型包括:
- float:4个字节,取值范围为1.4E-45到3.4E+38
- double:8个字节,取值范围为4.9E-324到1.8E+308
字符型基本类型包括:
- char:2个字节,表示一个Unicode字符
布尔型基本类型包括:
- boolean:占用1个字节,取值为true或false
引用数据类型是一种存储对象引用的变量类型。Java提供了多种引用数据类型,包括类、接口和数组。引用类型的变量存储了对象的内存地址,而不是对象本身。
Java中基本类型和引用数据类型之间可以进行自动转换和强制转换。
自动转换是指Java编译器自动将一个较小范围的基本类型转换为较大范围的基本类型,或者将一个子类对象转换为父类对象。这种转换是隐式的,不需要显式代码进行转换。
强制转换是指将一个较大范围的基本类型转换为较小范围的基本类型,或者将一个父类对象转换为子类对象。这种转换是显式的,需要使用强制转换操作符来进行转换。
例如:
int num1 = 100;
double num2 = num1; // 自动转换 int -> double
double num3 = 3.14;
int num4 = (int) num3; // 强制转换 double -> int
String str = "Hello";
Object obj = str; // 自动转换子类对象 String -> 父类对象 Object
String str2 = (String) obj; // 强制转换父类对象 Object -> 子类对象 String
需要注意的是,进行强制转换时,如果转换的类型不兼容,会在运行时抛出ClassCastException
异常。因此,在进行强制转换时应该确保类型转换是安全的。