==符的使用

首先看一段比较有意思的代码

Integer a = 1000,b=1000;

Integer c = 100,d=100; public void mRun(final String name){

new Runnable() {

public void run() {

System.out.println(name);

}

};

}

System.out.println(a==b);

System.out.println(c==d);

如果这道题你能得出正确答案,并能了解其中的原理的话。说明你基础还可以。如果你的答案 是 true 和true的话,你的基础就有所欠缺了。

首先公布下答案, 运行代码,我们会得到 false

true。我们知道==比较的是两个对象的引用,这里的abcd都是新建出来的对象,按理说都应该输入false才对。这就是这道题的有趣之处,无论是面试题还是论坛讨论区,这道题的出场率都很高。原理其实很简单,我们去看下Integer.java这个类就了然了。

public static Integer valueOf(int i) {

return i >= 128 || i < -128 ? new Integer(i) : SMALL_VALUES[i +

128];

}

/**

* A cache of instances used by {@link Integer#valueOf(int)} and

auto-boxing

*/

private static final Integer[] SMALL_VALUES = newInteger[256];

static {

for (int i = -128; i < 128; i++) {

SMALL_VALUES[i + 128] = new Integer(i);

}

}

当我们声明一个Integer c =

100;的时候。此时会进行自动装箱操作,简单点说,也就是把基本数据类型转换成Integer对象,而转换成Integer对象正是调用的valueOf方法,可以看到,Integer中把-128-127

缓存了下来。官方解释是小的数字使用的频率比较高,所以为了优化性能,把这之间的数缓存了下来。这就是为什么这道题的答案回事false和ture了。当声明的Integer对象的值在-128-127之间的时候,引用的是同一个对象,所以结果是true。

更多有趣的Java试题,来看看吧!

java挑战题_Java试题,你敢来挑战吗?相关推荐

  1. java概念题_JAVA 概念笔试题

    1.分别写出分支结构,循环结构的语法格式.循环结构:while 循环 [html] view plaincopy(init_statement); while (test_expression) { ...

  2. 面试常见java异常题_Java异常面试题(含答案)

    1.Java中异常分为哪两种? 编译时异常 运行时异常 2.异常的处理机制有几种? 异常捕捉:try-catch-finally,异常抛出:throws. 3.如何自定义一个异常 继承一个异常类,通常 ...

  3. java 判断题_Java面试题及解析(判断题)

    1.代码差错,判断代码对错,并指出错误处 abstract class Name{ private String name; public abstract Boolean isStupidName( ...

  4. java填空题_Java语言基础知识填空题

    Java语言基础知识填空题 想学java语言的人,要多做题才能巩固知识,下面小编为大家带来了Java语言基础知识的填空题,欢迎大家阅读! Java语言基础知识填空题. 1.浮点型数据根据数据存储长度和 ...

  5. java 变成题_Java 习题8 参考答案及解析

    1.问答题 "\hello"是正确的字符串常量吗? "你好KU".length()和"\n\t\t".length()的值分别是多少? &q ...

  6. java迷题_Java谜题3:汽车

    这个java谜题分为两部分.您必须解决此部分才能看到下一部分. 为了使发动机暖机,我们从最简单的开始.第二部分会更难. 如果你加速太快,车就会撞.但你能让它比极限快十倍吗? package car; ...

  7. 自考java填空题_java 自考题目

    1.在实现接口ActionListener的方法actionPerformed()中,常用的两个获得事件源方法有getActionCommend()和_____________.2.Connectio ...

  8. MyBatis08:ResultMap 的结果集映射,java编程题面试题

    1.2.7 利用 ResultMap 实现需求 1.2.8 编写测试类测试 1.3 一对多的处理 1.3.1 需求 1.3.2 SQL 语句 1.3.3 建立实体类 1.3.4 编写对应的 Mappe ...

  9. java判断题_java判断题

    判断题 1.Java语言有三种技术平台,分别是JavaSE.JavaME.JavaEE(T) 2.Java是一门高级计算机语言.(T) 3.Java语言具体跨平台的特性(T) 4.JDK工具中自带了一 ...

  10. java阅读题_java 练习题带答案

    第一题 int x = 1,y=1; if(x++==2 & ++y==2) { x =7; } System.out.println("x="+x+",y=&q ...

最新文章

  1. linux 非阻塞 socket,linux 非阻塞式socket编程求助。。
  2. 《Adobe Illustrator大师班:经典作品与完美技巧赏析》目录—导读
  3. 让隔壁同事哇塞的IDEA主题!
  4. 【Flutter】Flutter 布局组件 ( 布局组件简介 | Row 组件 | Column 组件 | SizedBox 组件 | ClipOval 组件 )
  5. idea项目怎么jdk和scala同时显示在External Libraries下?
  6. Linux监控(添加自定义监控项,配置邮件告警)
  7. 电机控制系统php,电机控制系统的未来发展变化趋势
  8. Javascript学习笔记8——用JSON做原型
  9. Godaddy 上的域名服务器状态查询
  10. 洛谷 P2879 [USACO07JAN]区间统计Tallest Cow
  11. Linux——DHCP服务器搭建
  12. 一个统计文章字数的算法,求改进
  13. 阿里云主机泄露Access Key到getshell
  14. 1t硬盘怎么分区最好_1TB的硬盘如何分区比较合理?
  15. Java模拟账户---关键字this
  16. windows如何截屏
  17. 电子制造企业如何做好供应商交期管理?可以从这3方面着手
  18. bootstrap dialog自行控制窗口的关闭
  19. 发现美团的一个新锅,可能程序员背不动了
  20. A. Parsa‘s Humongous Tree(树形DP + 贪心)

热门文章

  1. OpenCart支付宝付款接口(直接到账、担保交易、双接口)
  2. Word(六)-强大的“邮件合并”(2)
  3. pandas创建DataFrame
  4. python核心数据类型
  5. linux c文件处理命令
  6. numpy array
  7. SpringMVC类型转换、数据绑定详解
  8. 疯狂ios讲义疯狂连载之图像控件(UIImageView)
  9. 企业Web应用中的敏捷测试和瀑布测试
  10. Android驱动工程师职位要求