栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

002自动装箱和拆箱
  • 装箱和拆箱的概念
  • valueOf
  • ==运算符和equals函数

装箱和拆箱的概念
  • 装箱:将基本类型用包装器类型包装起来
  • 拆箱:将包装器类型转换为基本类型
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的对象。
  • Integer、Short、Byte、Character、Long这几个类的valueOf方法的实现类似。
  • Double、Float的valueOf方法的实现类似。
  • Boolean的True和False是两个静态成员属性。
    Integer i = new Integer(xxx)会触发自动装箱,而Integer i = xxx不会。
==运算符和equals函数
  • ==运算符的两个操作数都是包装器,则比较是否指向同一对象,如果有一个操作数是表达式(包括算数运算)则比较的是数值(会触发自动拆箱)。
  • equals会先触发自动拆箱,再触发自动装箱过程。
  • int == Integer进行比较时,Integer会先拆箱再比较。
  • integer1 == integer2 进行比较时,由于都是通过new创建,故存放位置不同,因此为false。
    上一篇:001隐式(自动)类型转换和显示(强制)类型转换

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/847447.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号