基本类型
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 优化之后,会对对象进行逃逸分析,如果发现某一个对象并没有逃逸到方法外部,那么就可能通过标量替换来实现栈上分配,而避免堆上分配内存。