讨论java有基础类型,为什么还要有封装类型呢?两者之间的比较方式?

java有哪些基础类型

  • boolean/1
  • byte/8
  • char/16
  • short/16
  • int/32
  • float/32
  • long/64
  • double/64

java为什么有基础类型,为什么还要有封装类型呢?

举个例子吧,Character和char的区别是在于char只是存了个数据,而Character的区别在于他带有了一系列操作该数据的方法

好处是什么呢?

  1. 一些类都有共有的方法
  2. 然后是面向对象绝对比面向过程开发快,他相当于是把操作数据的方法和数据绑定在一块,最显著的效果就是让我们开发更快,方法复用更高

两者之间的比较方式?

总共两种: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
posted @ 2024-10-15 17:43  海山了-  阅读(3)  评论(0编辑  收藏  举报