讨论java有基础类型,为什么还要有封装类型呢?两者之间的比较方式?
java有哪些基础类型
- boolean/1
- byte/8
- char/16
- short/16
- int/32
- float/32
- long/64
- double/64
java为什么有基础类型,为什么还要有封装类型呢?
举个例子吧,Character和char的区别是在于char只是存了个数据,而Character的区别在于他带有了一系列操作该数据的方法
好处是什么呢?
- 一些类都有共有的方法
- 然后是面向对象绝对比面向过程开发快,他相当于是把操作数据的方法和数据绑定在一块,最显著的效果就是让我们开发更快,方法复用更高
两者之间的比较方式?
总共两种:equals()与==
- 对于基本类型,== 判断两个值是否相等,基本类型没有 equals() 方法。
- 对于引用类型,== 判断两个变量是否引用同一个对象,而 equals() 判断引用的对象是否等价。
具体情况1 Integer
- 缓冲池(多次调用会取得同一个对象的引用。),例如integer的-128~127(除了long,double,float都有),触发方式(Interger.valueOf(123))
- new Integer(123) 每次都会新建一个对象
- 在缓冲池范围内的基本类型自动装箱调用的是valueOf()方法,因此多个 Integer 实例使用自动装箱来创建并且值相同,那么就会引用相同的对象。
具体情况2 String
- String.intern() 可以保证相同内容的字符串变量引用同一的内存对象。
- String s1=new String("aaa")
- String s3="bbb" 会自动地将新建的对象放入 String Pool 中,也就是引用的会是同一个对象
String s4="bbb"
s3==s4//true
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了