Java入门基础教程-Java数据类型
一、Java数据类型的分类
1. 基本数据类型
数值型
byte:占1个字节,取值范围:-128到127
short:占2个字节,取值范围:-32,768到32,767
int:占4个字节,是Java中最常用的整数类型,取值范围:-2,147,483,648到2,147,483,647
long:占8个字节,用于表示大整数,取值范围:-9,223,372,036,854,775,808到9,223,372,036,854,775,807
浮点类型用于表示小数,Java提供了float和double两种浮点类型:
float:占4个字节,精度较低,常用于一般浮点计算
double:占8个字节,精度较高,是Java中默认的浮点类型
字符型
char类型用于存储单个字符,占2个字节,其取值范围是Unicode字符集的所有字符。
布尔型
boolean类型只有两个值:true和false,常用于条件判断、逻辑运算等场景。
2. 数据类型转换
基本数据类型之间的转换
(1) 自动类型转换(隐式类型转换)
当一个较小的数据类型与较大的数据类型进行运算时,较小的数据类型会自动转换为较大的数据类型。例如,byte可以自动转换为short、int、long、float或double;short可以自动转换为int、long、float或double。
在自动类型转换时,需要注意数据范围的匹配。例如,一个大的int值如果直接转换为byte,可能会导致数据溢出。
(2) 强制类型转换(显式类型转换)
当两个数据类型完全不兼容时,需要进行强制类型转换。强制类型转换需要使用括号将目标类型放在待转换的表达式前面。例如,int可以强制转换为byte,即(byte)a,其中a为int变量。
强制类型转换可能会导致精度损失或数据溢出,因此在使用时需要特别小心。
示例
public class Demo {
public static void main(String[] args) {
int a = 20;
byte b = (byte) a;
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); // 丢掉小数部分,保留整数部分
}
}
引用数据类型之间的转换
(1) 向上转型(Upcasting)
子类对象可以自动转换为父类对象,这种转换被称为向上转型。例如,如果有一个Animal类的子类Dog,那么一个Dog对象可以自动转换为Animal对象。
向上转型可以提高代码的可扩展性和复用性。
(2) 向下转型(Downcasting)
父类对象可以通过强制类型转换为子类对象,这种转换被称为向下转型。例如,一个Animal对象可以转换为Dog对象,即(Dog)animal,其中animal为Animal类型的引用变量。
向下转型在编译时是合法的,但在运行时可能会抛出ClassCastException异常。因此,在进行向下转型时,需要先使用instanceof运算符检查对象是否是目标类型的实例。
基本数据类型与引用数据类型之间的转换
(1) 基本数据类型转换为引用数据类型
基本数据类型可以通过其对应的包装类(如Integer、Double、Boolean等)的构造函数或valueOf()方法转换为对应的引用数据类型。例如,int可以转换为Integer,即Integer.valueOf(a),其中a为int变量。
(2)引用数据类型转换为基本数据类型
引用数据类型可以通过调用包装类的xxxValue()方法(如intValue()、doubleValue()等)转换为基本数据类型。例如,一个Integer对象可以通过调用intValue()方法转换为int类型。
示例
int类型与String类型之间的转换
int转String:String s1 = String.valueOf(i); 或 s1 = Integer.toString(i); 或 s1 = "" + i;
String转int:int i1 = Integer.parseInt(s2); 或 i1 = Integer.valueOf(s2).intValue();