讨论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