2-17的两点问题

2-17的两点问题

1、

Double d1=Double.valueOf(100);

System.out.println("d1==100的结果:"+(d1==100));

老师,打印的比较结果是true,我有疑问的地方是:Double包装类存储的数据是int类型的100,但是Double本身是浮点型包装类,所以存进去后应该是100.00,当(d1==100),自动拆箱后难道不应该是100.00吗,怎么会是100呢?


2、

Double d1=Double.valueOf(100);

老师,课程里说Double和Float包装类不具备什么常量池的。。。资格。。感觉说的不太准确。那么,如上段代码所示,Double.valueOf(100)此时的valueOf就不会去常量池查找存储-128到127之间数值的对象,那么valueOf()做了什么操作呢?


正在回答

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

4回答

同学你好,

1、所有包装类的自动装箱默认都会调用valueOf方法。

2、常量池会存放Long,Integer,Byte,Short类型在[-128,127]范围中的数值。

Character类型的数值存储在常量池的范围是 0 到 127。

Boolean类型在常量池中的范围为true,false。

Float,Double类型没有常量池的概念。所以,常量池中不会存放这两种类型的数值。

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

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

  • 鱼儿0001 提问者 #1
    好的,谢谢老师。1、Character类型的数值存储在常量池的范围是 0 到 127。这是char类型的字符转换成的int类型的阿斯克马值吧?我发现char类型的字符怎么常常默认转换呢。2、Boolean a=true;------------Boolean b=true;------------System.out.println(a==b);老师,因为包装类a已经new了一个对象,存储的值为true,所以下次创建对象b时,直接去常量池找有没有存储值为true的对象,所以打印输出是true对吗?
    2019-06-22 15:37:05
吃吃吃鱼的猫 2019-06-22 18:47:56

同学你好,理解都是正确的。

祝:学习愉快~

吃吃吃鱼的猫 2019-06-20 09:44:55

同学你好

1、是的

2、Double.valueOf(100);

先执行valueOf方法,valueOf方法内部再执行new Double(100)的操作。如图所示:

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

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

  • 提问者 鱼儿0001 #1
    好的,谢谢老师。老师,所有包装类的自动装箱都会默认调用valueOf方法吗?
    2019-06-20 17:27:27
  • 提问者 鱼儿0001 #2
    并且,老师,关于-128<=参数<=127,这是针对int类型的数值参数,还是除了double和float类型数值外,所有其他基本数据类型都可以适用吗?我不禁想到了boolean和char类型的值,这怎么看都。。。。不能用吧。
    2019-06-20 17:30:32
吃吃吃鱼的猫 2019-06-19 17:10:45

同学你好,

1、首先包装类Double的值不存放在常量池中。

Double d1=Double.valueOf(100);

该语句是重新创建一个Double类型的对象,相当于执行了new Double(100);操作。

当包装类与基本数据类型进行比较时(d1==100),先将包装类转换成基本数据类型,再做值比较,此时左右两边相当于是double,int类型。

当int类型与double类型进行比较时,会将int类型默认转换为double类型进行比较。

所以,d1==100返回true。

2、Double.valueOf(100)此时的valueOf方法是执行了new Double(100);的操作。

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

  • 提问者 鱼儿0001 #1
    好的,谢谢老师。看了老师的回复,我有两点疑问:1、也就是说,最后比较的其实是:100.00==100.00,对吗?2、Double.valueOf(100)方法是直接转接执行new Double(100)的操作。valueOf方法本身没有执行,对吗?
    2019-06-19 19:25:32
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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