2-17
public class WrapperTest {
public static void main(String[] args) {
Integer one=new Integer(100);
Integer two=new Integer(100);
// 等号两边如果是对象名,比的是引用地址
System.out.println("one1=two的结果:"+(one==two));
Integer three=100; // 自动装箱
// Integer three = Integer.valueOf(100);
System.out.println("three=two的结果:"+(three==100)); // 自动拆箱
// Integer four=100;
Integer four = Integer.valueOf(100);
System.out.println("three=four的结果:"+(three==four));
Integer five= 200;
System.out.println("three=four的结果:"+(five==four));
Integer six= 200;
System.out.println("three=four的结果:"+(five==six));
double d1=Double.valueOf(100); // 自动拆箱
System.out.println("d1=100的结果:"+(d1==100));
double d2=Double.valueOf(100); // 此时的valueOf方法是执行了new Double(100);的操作
System.out.println("d1=d2的结果:"+(d1==d2));
}
}1、为什么我的最后一个输出结果是true?
2、为什么d1可以自动拆箱成100,d2不可以自动拆箱变成100?
7
收起
正在回答
1回答
同学你好,关于同学的问题有如下回答:
1、在老师的演示中,定义的是包装类Double,如:

而同学定义的是基本数据类double,如:

在d1和d2比较时,比较的是数值的大小,是相等的,所以输出true。
2、d2也可以自动拆箱的,在同学的代码中,double d2 = Double.valueOf(100);其中Double.valueOf(100);是创建一个Double包装类的对象,d2是double基本数据类型,double d2 = Double.valueOf(100);就是一个自动拆箱的过程。
如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
1. Java 零基础入门
- 参与学习 人
- 提交作业 3802 份
- 解答问题 11489 个
本阶段带你迈入Java世界,学习Java必备基础知识,基础语法、面向对象思想以及常用工具类的使用。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星