数据类型
java的数据类型可分为基本数据类型和引用数据类型
基本数据类型:
- byte:1字节
- short:2字节
- int:4字节
- long:8字节
- float:4字节
- double:8字节
- char:2字节
- boolean:1bit
8bit= 1字节
虽然boolean只占1bit,但没有指定具体的大小,在jvm中会将其转换为int,jvm支持boolean数组,但是是通过读写 byte 数组来实现的。
引用数据类型:
- 数组
- 类
- 接口
引用数据类型是基于基本数据类型来实现的,引用数据类型是由用户自定义,用来限制其他数据的类型。另外,Java 语言中不支持 C++ 中的指针类型、结构类型、联合类型和枚举类型。
包装类
在java中,一切皆为对象,只有基本数据类型不是,而且基本数据类型的使用还是有一些限制,所以java为他们提供了对应的包装类。
基本数据类型和其对应的包装类可以自动进行拆箱和装箱。
缓存池
以Integer为例。
new Integer(123) 与 Integer.valueOf(123) 的区别在于:
- new Integer(123) 每次都会新建一个对象;
- Integer.valueOf(123) 会使用缓存池中的对象,多次调用会取得同一个对象的引用。
new()会直接创建新对象,而使用valueOf() 方法,就是先判断值是否在缓存池中,如果在的话就直接返回缓存池的内容。
缓冲池的大小有范围限制,所以使用valueOf方法在范围内就返回缓冲池的内容,没有就创建新类。
Integer x = new Integer(123);
Integer y = new Integer(123);
System.out.println(x == y); // false
Integer z = Integer.valueOf(123);
Integer k = Integer.valueOf(123);
System.out.println(z == k); // true
false
true