【Java面试宝典(Java核心知识点)】--002自动装箱和拆箱

装箱和拆箱的概念

  • 装箱:将基本类型用包装器类型包装起来
  • 拆箱:将包装器类型转换为基本类型

valueOf

Integer a = 100;
Integer b = 100;
Integer c = 128;
Integer d = 128;
System.out.println(a == b); // true
System.out.println(c == d); // false

其实,Integer方法中的valueOf方法:

public static Integer valueOf(int i){
    
    
	if(i >= IntegerCache.low && i <= IntegerCache.high)
		return IntegerCache.cache[i + (-IntegerCache.low)];
	return new Integer(i);
}

当不满足条件时,会重新创建一个对象返回,故结果必然不相等。

  • valueOf方法在创建Integer对象的时候,如果数值在[-128,127]之间,便返回指向IntegerCache.cache中已经存在的对象的引用,否则创建一个新的Integer对象。
  • Double类型中的valueOf方法,每次返回都是重新new的对象。
  • IntegerShortByteCharacterLong这几个类的valueOf方法的实现类似。
  • DoubleFloatvalueOf方法的实现类似。
  • BooleanTrueFalse是两个静态成员属性
    Integer i = new Integer(xxx)会触发自动装箱,而Integer i = xxx不会。

==运算符和equals函数

❤️这里是 三千步, 让我们一起学习进步~❤️

猜你喜欢

转载自blog.csdn.net/qq_44005101/article/details/124486672
今日推荐