final和包装类

时间:2023-03-09 00:54:28
final和包装类

final和包装类

final和包装类

final和包装类

final和包装类

final和包装类

===============================================================================================================

单例设计模式:

final和包装类final和包装类

公共说明在任何地方都可以调用.     静态用来获取对象. 如果不是静态的,还需要用对象.XXX来获取对象,既然有对象了就不用获取对象了. 静态的就可以用  类名.方法  去间接获取对象了.

======================================================================================================================================

工具类的设计:

final和包装类

=========================================================================================================================================

基本数据类型包装类:

final和包装类final和包装类模拟基本类型包装类写法.  

八大基本类型包装类:

final和包装类final和包装类final和包装类final和包装类

final和包装类

final和包装类

final和包装类

final和包装类

包装类的基本使用:

final和包装类

Integer.valueof(123): 返回一个表示指定的 int 值的 Integer 实例。

xxxvalue:八大基本类型的相互转换.

character没有(string str)   因为char是字节.  字符串是组合的字节.

final和包装类  这里的123可以从str字符串类型转换成数.   字符串里不允许出现不可以转换成Integer的东西存在.  如"1321sdadfAS".

final和包装类final和包装类

final和包装类

final和包装类false

=====================================================================================================================================================

包装类中的缓存设计:

final和包装类  推荐使用包装类, 包装类-128,127存在缓存设计.

包装类之间的比较用equals进行比较. 包装类对equals进行覆盖,   比较数值是否一样.

包装类的缓存设计(享元模式),本质就是缓存设计:
Byte,Short,Integer,Long:缓存[-128,127]区间的数据;
Character:缓存[0,127]区间的数据.
class CacheDemo{
public static void main(String[] args){
Integer i1=new Integer(123);
Integer i2=new Integer(123);
System.out.println(i1==i2);//false

Integer i3=Integer.valueOf(123);
Integer i4=Integer.valueOf(123);
System.out.println(i3==i4);//true

Integer i5=123;
Integer i6=123;
System.out.println(i5==i6);//true
System.out.println("---------------------------");
Integer i11=new Integer(250);
Integer i21=new Integer(250);
System.out.println(i1==i2);//false

Integer i31=Integer.valueOf(250);
Integer i41=Integer.valueOf(250);
System.out.println(i3==i4);//false

Integer i51=250;
Integer i61=250;
System.out.println(i5==i6);//false

}
}
上述结果怎么回事?
----在[-128,127]之间,就获取缓存中的数据,否则就进行new Integer操作
----自动装箱进行的就是Integer.valueOf()操作

在包装类中,比较值用equals比较.包装类型equals方法的底层使用了拆箱操作

======================================================

int和Intager区别:

Integer和int的区别:
1)默认值:
int的默认值是0
Integer的默认值是null
Integer类型的值既可以是null又可以是0
2)包装类中提供了该类型的相关的很多算法操作方法.
static String toBinaryString(int i):把十进制转换为二进制.
static String toOctalString(int i): 把十进制转换为八进制
static String toHexString(int i): 把十进制转换为十六进制.
3)在集合框架中,只能存储对象类型,不能存储基本数据类型
4)int和Integer不是同一类型
public void ooxx(int val){}
public void ooxx(Integer val){}
两者共存时,到底调用哪种方法?
若参数是int类型,调用第一个.Integer类型调用第二个.
5)方法中的基本类型变量存储在栈中,包装类型存放于堆中.
开发中建议使用包装类型.

===============================================================