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 Integer40);//实际创建了一个新的对象

作者:frankLiang

出处:https://www.cnblogs.com/frankLiang442/p/18310546

版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。

posted @   瑞莫蒂  阅读(52)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
more_horiz
keyboard_arrow_up light_mode palette
选择主题
menu
点击右上角即可分享
微信分享提示