在jdk1.5的环境下,有如下4条语句:
1
2
3
4
Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59)。
以下输出结果为false的是:

正确答案: C

  1. System.out.println(i01== i02);
  1. System.out.println(i01== i03);
  1. System.out.println(i03== i04);
  1. System.out.println(i02== i04);
1
2
3
4
Integer i01 = 59;
int i02 = 59;
Integer i03 =Integer.valueOf(59);
Integer i04 = new Integer(59);
  1. 原因分析:因为int类型和integer类型在jdk1.5之后对比的时候就进行了自动拆箱所以这里i01== i02true i02== i04true
  1. 然后让我们来分析下Integer.valueOf返回表示指定的int值的整数实例。此方法将始终缓存-128127(含)范围内的值来看源码:如果不在-128127new一个integer对象
  1. public static Integer valueOf(int i) {
  2. if (i >= IntegerCache.low && i <= IntegerCache.high)
  3. return IntegerCache.cache[i + (-IntegerCache.low)];
  4. return new Integer(i);
  5. }
  1.  

题目中是59所以这个方法是从缓存中找到数据的,也是可以将i03看成Integer i03 = i01=59;(i01== i03是true)

Integer类型相互比较是两个对象进行比较不是值,所以false

  1. i01== i04falsei03== i04falseDemo:
  1. public static void main(String[] args) {
  2. Integer i01 = 59;
  3. System.out.println("i01="+i01);
  4. int i02 = 59;
  5. System.out.println("i02="+i02);
  6. Integer i03 =Integer.valueOf(59);
  7. System.out.println("i03="+i03);
  8. Integer i04 = new Integer(59);
  9. System.out.println("i04="+i04);
  10. System.out.println(i04==i03);
  11. System.out.println(i04==i01);
  12. System.out.println(i03==i01);
  13. }
  1.  

控制台:

重点来了,敲黑板!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

  1. 如果不是59,而是小于-128或者大于127i03new一个新的interger,也就是说将i03看成Integer i03 =new Integer(59);(i01== i03falseDemo
  1. public static void main(String[] args) {
  2. Integer i01 = 359;
  3. System.out.println("i01="+i01);
  4. int i02 = 359;
  5. System.out.println("i02="+i02);
  6. Integer i03 =Integer.valueOf(359);//看成Integer i03 =new Integer(59);
  7. System.out.println("i03="+i03);
  8. Integer i04 = new Integer(359);
  9. System.out.println("i04="+i04);
  10. System.out.println(i04==i03);
  11. System.out.println(i04==i01);
  12. System.out.println(i03==i01);
  13. }
  1.  

控制台:

java面试基础题------》int Integer Integer.valueOf的更多相关文章

  1. java面试基础题(三)

    程序员面试之九阴真经 谈谈final, finally, finalize的区别: final:::修饰符(关键字)如果一个类被声明为final,意味着它不能再派生出新的子类,不能作为父类被继承.因此 ...

  2. java面试基础题------》Java 中的父子类静态代码块,代码块,构造方法执行顺序

    4.指出下面程序的运行结果. class A { static { System.out.print("1"); } public A() { System.out.print(& ...

  3. java面试基础题------》抽象类和接口有什么异同

    划重点!!!! 1.抽象类(abstract class)和接口(interface)有什么异同? 相同点 * 都不能被直接实例化,都可以通过继承实现其抽象方法. * 都是面向抽象编程的技术基础,实现 ...

  4. java面试基础题------》Java 中List、Set、Map异同点

    借鉴地址:http://blog.csdn.net/speedme/article/details/22398395 几句喜欢的话,拷贝下来: 世间上本来没有集合,(只有数组参考C语言)但有人想要,所 ...

  5. java面试基础题------》Java 中的final关键字有哪些用法

    (1)修饰类:表示该类不能被继承: (2)修饰方法:表示方法不能被重写: (3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量).

  6. 分享13道上海尚学堂拿回来的Java面试真题,这些都是Java核心常见问题,想拿OFFER必看!

    上海尚学堂Java培训学员参加面试带回来的真题,分享出来与大家,希望大家能认真地看看做一遍.后面有详细题解答案,对照下,看看自己做得怎么样,把这些面试遇到的真题全部掌握,做好面试笔试前的准备. 一.1 ...

  7. Java底层基础题

    一.Java底层基础题 1.SpringMVC的原理以及返回数据如何渲染到jsp/html上? 答:Spring MVC的核心就是DispatcherServlet , 一个请求经过Dispatche ...

  8. Java面试题精选(三) JSP/Servlet Java面试逻辑题

    --   JSP/Servlet  Java面试逻辑题   --     很显然,Servlet/JSP的WEB前端动态制作的重要性比HTML/CSS/JS的价值高很多,但我们都知道他们都是建立在HT ...

  9. 一些iOS面试基础题总结

    一些iOS面试基础题总结 目录 多线程 AutoLayout objc_msgSend Runtime 消息转发 Category NSObject 与 objc_class Runloop Auto ...

随机推荐

  1. 【Android】14.0 第14章 内部存储与外部SD卡存储—本章示例主界面

    分类:C#.Android.VS2015: 创建日期:2016-02-27 一.简介 Android使用的文件系统是基于Linux的文件系统,在Android应用程序中,开发人员既可以建立和访问程序自 ...

  2. linux(二十一):apache服务配置(二)

    1.普通用户进入家文件夹 ​ ​紧接着之前的进度,我们想想博客的实现.每一个用户在登录之后.都是在自己的家文件夹.那么对于我们的要求就是要设置每一个用户的默认公布文件夹为其家文件夹. 接着我们就来实现 ...

  3. Sphider + SCWS 打造完美PHP中文搜索引擎

    今日需要为几个网站做个全文搜索引擎,找了几个PHP开源项目,先试了一下Sphinx ,可惜是基于数据库的,相当于数据库搜索的扩展.Sphider还不错,不过中文的分词不行,基本只能靠空格和符号进行分词 ...

  4. IIS添加域名

    前提:域名可用 1.打开网站,点击右侧 绑定 2.添加域名  点击确定 3.结果: ok  配置完成.

  5. mysql client中使用帮助命令

    当前MySQL服务器的版本号 使用那个命令来参看MySQL的帮助信息 帮助主题供我们查看. 命令为: ? contents 例如查看max方法的使用方法则输入? max即可 这个在navcat中是不支 ...

  6. 亿级日PV的魅族云同步的核心协议与架构实践(转)

    云同步的业务场景 这是魅族云同步的演进,第一张是M8.M9,然后到后面的是MX系统,M9再往后发展,我们的界面可以看到基本上是没有什么变化的,但本质发生了很大的变化,我们经过了一些协议优化,发展到今天 ...

  7. C++按行读取和写入文件

    按行读取: 假设有一个文本文件,如下所示: 1 2 32 3 43 4 55 6 77 8 9 文件名为split.txt 目的:按照行读取数据,并一个个的显示出来. 代码如下: #include & ...

  8. IOS微信API异常:unrecognized selector sent to instance 0x17005c9b0'

    开发IOS整合微信API的时候,在运行程序的过程中可能会在注册你的APPID的时候抛出此异常而导致程序崩溃. 异常描述 [7661:2826851] *** Terminating app due t ...

  9. js获取textaera对象(object)的值

    for(i in pstrWord ){ alert(i); //获得属性 alert(pstrWord[i]); //获得属性值 } 1.js输出object对象方法如下: function wri ...

  10. 一个美国人对"智能制造"的思考!

    世界上制造业最强的国家仍然是美国!如今,国内工业4.0概念讨论日益喧嚣,中德合作如火如荼,但我们不能否认这个事实. “ 当下,美国似乎失去了世界第一制造大国的称号,而中国的企业也正面临产值下滑.利润下 ...