Java基础-基本类型和包装类型
基本类型
Java有八种基本类型
- int
- float
- double
- long
- boolean
- char
- short
- byte
基本类型如果是局部变量,那它们的位置会在虚拟机栈种。如果是成员变量它们会存放在堆中。
包装类型
相对应的Java也有八种包装类型
- Int
- Float
- Double
- Long
- Boolean
- Char
- Short
- Byte
区别
1.默认值:基本类型都各自有自己的默认值,包装类型的默认值是null。
2.使用:除了定义一些常量和局部变量之外,在方法参数、对象属性中很少会使用基本类型来定义变量。
而且包装类型可用于泛型,而基本类型不可以。(比如int的默认值是0,Integer的默认值是null,null对于程序来说比较好处理,可以进行空值判断,而且数据库中字段值可能为null,这个时候int会报错,而Integer不会)
3.比较方式:基本类型直接都用==比较,而包装类型用equals()来比较。
4.存储位置:几乎所有对象都存放在堆上,不说全部是因为HotSpot 虚拟机引入了 JIT 优化之后,会对对象进行逃逸分析,如果发现某一个对象并没有逃逸到方法外部,那么就可能通过标量替换来实现栈上分配,而避免堆上分配内存。
自动拆装箱
Integer a = 1; //此时发生了装箱,调用了Integer.valueOf(1)方法,每个包装类型都有其valueOf()方法。
int b = a; //此时发生了拆箱,调用了a.intValue()方法,每个包装类型都有其拆箱方法。
缓存机制
Java 基本数据类型的包装类型的大部分都用到了缓存机制来提升性能。Byte,Short,Integer,Long 这 4 种包装类默认创建了数值 [-128,127] 的相应类型的缓存数据,Character 创建了数值在 [0,127] 范围的缓存数据,Boolean 直接返回 True or False。
Integer a=40; //装箱,Integer.valueOf(40),实际使用了Integer缓存。
Integer b = new Integer(40);//实际创建了一个新的对象
本文来自博客园,作者:瑞莫蒂,转载请注明原文链接:https://www.cnblogs.com/frankLiang442/p/18310546

浙公网安备 33010602011771号