一、基础数据类型
Java基础数据类型包括八种:byte、short、int、long、float、double、char、boolean。
byte:占用1个字节,取值范围为-128~127之间的整数。
short:占用2个字节,取值范围为-32768~32767之间的整数。
int:占用4个字节,取值范围为-2147483648~2147483647之间的整数。
long:占用8个字节,取值范围为-9223372036854775808~9223372036854775807之间的整数。
float:占用4个字节,取值范围为±(1.40129846432481707e-45~3.40282346638528860e+38)之间的浮点数。
double:占用8个字节,取值范围为±(4.94065645841246544e-324~1.79769313486231570e+308)之间的浮点数。
char:占用2个字节,表示Unicode编码中的一个字符。
boolean:占用1个字节,表示真或假。
二、.数据类型转换
Java 数据类型转换分为自动类型转换和强制类型转换两种。
1. 自动类型转换
自动类型转换是指当数据类型不一致时,Java 编译器会自动将低类型转换为高类型,例如将 int 类型转换为 long 类型、将 float 类型转换为 double 类型等。自动类型转换的规则如下:
- byte、char、short 自动转换为 int;
- int 自动转换为 long;
- float 自动转换为 double。
下面是一个自动类型转换的示例代码:
```
int a = 100;
long b = a;
float c = b;
System.out.println("a=" + a + ", b=" + b + ", c=" + c);
```
输出结果:
```
a=100, b=100, c=100.0
```
2. 强制类型转换
强制类型转换是指将高类型强制转换为低类型,需要使用小括号指定要转换的类型。强制类型转换的注意事项如下:
- 强制类型转换可能会导致精度丢失;
- 强制类型转换可能会导致溢出。
下面是一个强制类型转换的示例代码:
```
int a = 200;
byte b = (byte) a;
System.out.println("a=" + a + ", b=" + b);
```
输出结果:
```
a=200, b=-56
```
在这个示例中,将 int 类型的变量 a 强制转换为 byte 类型的变量 b,由于 byte 类型只有 8 位,所以在转换时可能会导致溢出和精度丢失。
三、数据类型判断
Java中可以通过以下方法判断数据类型:
1. 使用instanceof运算符
instanceof运算符可以用来判断一个对象是否属于某个类或者实现了某个接口。例如:
String str = "hello";
if (str instanceof String) {
System.out.println("str是一个字符串");
}
2. 使用getClass()方法
对象的getClass()方法可以返回它所属类的Class对象,从而可以判断它的类型。例如:
Object obj = new Integer(10);
if (obj.getClass() == Integer.class) {
System.out.println("obj是一个整数");
}
3. 使用反射机制
反射机制可以在运行时获取一个类的信息,包括它的成员变量、方法等。例如:
Object obj = "hello";
Class cls = obj.getClass();
if (cls == String.class) {
System.out.println("obj是一个字符串");
}
```