首页 > Java > java教程 > 正文

Java 编程实例题目分析

WBOY
发布: 2023-04-24 19:07:05
转载
998 人浏览过

题目1:

<code>public static void demo01() {<br>    Integer f1 = 100, f2 = 100, f3 = 200, f4 = 200;<br>    System.out.println(f1 == f2);<br>    System.out.println(f3 == f4);<br>}</code>
登录后复制

题目2:

<code>private static Integer i;<br>public static void demo02() {<br>    if (i == 0) {<br>        System.out.println("A");<br>    } else {<br>        System.out.println("B");<br>    }<br>}</code>
登录后复制

题目1答案:

true

false

题目2答案:

NullPointerException

解析:

题目1:

以下是Integer类中“自动装箱”的源码:

<code>public static Integer valueOf(int i) {<br>    if (i >= IntegerCache.low && i <= IntegerCache.high)<br>        return IntegerCache.cache[i + (-IntegerCache.low)];<br>    return new Integer(i);<br>}<br></code>
登录后复制

其中IntegerCache.low的是值是-128,IntegerCache.high的值是127。也就是说,Integer在自动装箱时,如果判断整数值的范围在[-128,127]之间,则直接使用整型常量池中的值;如果不在此范围,则会new 一个新的Integer()。因此,本题f1和f2都在[-128,127]范围内,使用的是常量池中同一个值。而f3和f4不在[-128,127]范围内,二者的值都是new出来的,因此f3和f4不是同一个对象。

题目2:

Integer i 的默认值是null。当执行 i==0 时,等号右侧是数字,因此为了进行比较操作,Integer会进行自动拆箱(也就是将Integer转为int类型)。很明显,如果对null进行拆箱(将null转为数字),就会报NullPointerException。

以上是Java 编程实例题目分析的详细内容。更多信息请关注PHP中文网其他相关文章!

相关标签:
来源:yisu.com
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板