数据类型
- 基本数据类型
- 引用数据类型
基本数据类型
- 数值类型
- boolean类型
数值类型
- 整数类型
- 浮点类型
- 字符类型
整数类型
byte:占1个字节 范围:-128~127
short:占2个字节 范围:-32768~32767
int:占4个字节 范围:-2147483648~2147483647
long:占8个字节 范围:-9223372036854775808~9223372036854775807
long a = 10L;
浮点类型
float:占4个字节
float a = 1.0F;
double:占8个字节
字符类型
char:占2个字节
boolean类型
占1位,其值只有false和true两个
引用数据类型
- 类
- 接口
- 数组
整数拓展
二进制0b 八进制0 十六进制0x
int i = 10; // 十进制
int i2 = 010; // 八进制
int i3 = 0x10; // 十六进制
System.out.println(i); // 10
System.out.println(i2); // 8
System.out.println(i3); // 16
浮点数拓展
float数据类型是有限、离散的,它计算时会舍入误差,结果接近但不等于
float f = 0.1f;
double d = 1.0 / 10;
System.out.println(f == d); //false
System.out.println(f == d); //0.1
System.out.println(f == d); //0.1
结论:最好完全避免使用浮点是进行比较,可以使用BigDecimal数学工具类来进行比较
字符拓展
所有字符的本质还是数字
char c1 = 'A';
char c2 = '中';
System.out.println(c1); // A
System.out.println((int) c1); // 65
System.out.println(c2); // 中
System.out.println((int) c2); // 20013
// U0000 ~ UFFFF
char c3 = '\u0061';
System.out.println(c3); // a
转义字符:
实例对象和局部对象之间的差别
实例对象无需初始化,因为它们有默认的值。而局部变量没有默认值,如果在变量被初始前就要使用的话,编译器会显示错误。
public class NumTest {
public static void main(String[] args) {
int x = 0; // 局部变量 需要初始化
System.out.println(x);
Num num = new Num();
System.out.println(num.getY());
}
}
class Num{
private int y; // 实例变量 无需初始化 默认值为0
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}
}