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);//实际创建了一个新的对象
作者:frankLiang
出处:https://www.cnblogs.com/frankLiang442/p/18310546
版权:本作品采用「署名-非商业性使用-相同方式共享 4.0 国际」许可协议进行许可。
本文来自博客园,作者:瑞莫蒂,转载请注明原文链接:https://www.cnblogs.com/frankLiang442/p/18310546
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通