2-17

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?



正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,关于同学的问题有如下回答:

1、在老师的演示中,定义的是包装类Double,如:

http://img1.sycdn.imooc.com//climg/5d1c140c0001379206740192.jpg

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

http://img1.sycdn.imooc.com//climg/5d1c144c0001283304670095.jpg

在d1和d2比较时,比较的是数值的大小,是相等的,所以输出true。

2、d2也可以自动拆箱的,在同学的代码中,double  d2 = Double.valueOf(100);其中Double.valueOf(100);是创建一个Double包装类的对象,d2是double基本数据类型,double  d2 = Double.valueOf(100);就是一个自动拆箱的过程。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~

问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师