Java 面试题
来源:互联网 发布:java培训机构大全 编辑:程序博客网 时间:2024/04/29 08:00
Java题:为什么128 == 128返回为False,而127 == 127会返回为True?
class A
{
public static void main(String[] args)
{
Integer a = 128, b = 128;
System.out.println(a == b);
Integer c = 127, d = 127;
System.out.println(c == d);
}
}
会得到如下结果:
false
true
如果两个引用指向同一个对像,那么==就成立;反之,如果两个引用指向的不是同一个对象,那么就不成立,即便两个引用的内容是一样的,结果也会出现false.
在Integer.Java类中,有IntegerCache.java这个内部私有类,为-128到127之间的整数对象提供缓存。
而在Integer源码中:
如果值在-128到127之间,它就会返回该缓存的实例。
Integer c = 127, d = 127;
两者指向同样的对象。
这就是为什么下面这段代码的结果为true了:
System.out.println(c == d);
继续去看一下 Integer 源码,去深入了解 Integer 缓存机制,下面截个图:
根据源码可以发现最后修改 Integer 缓存上限时候的方法有点小瑕疵。我们看看Api给我们怎么建议的一段话:
the size of the cache may be controlled by the {@code -XX:AutoBoxCacheMax=} option.
原来我们只需要:运行时设置 -XX:AutoBoxCacheMax=133 就OK。
- Java面试题-朋友的面试题
- java 阿里面试题 百度面试题 CVTE面试题
- Java面试题集
- JAVA面试题
- Java面试题集
- Java 面试题
- JAVA面试题集
- java面试题1
- JAVA华为面试题
- java常用面试题
- java面试题
- JAVA面试题集
- JAVA面试题集
- java面试题集
- [转载] JAVA面试题
- Java面试题集
- JAVA面试题-1
- [转载] JAVA面试题
- 五个典型的JavaScript面试题
- 更新JAVA最新JDK遇到的问题
- 编译超过2000+错误Error:warning: Ignoring InnerClasses attribute for an anonymous inner class
- zmq_send
- 15.4 ZIP文档
- Java 面试题
- find命令常用解析
- SGE作业基本用法
- java web 项目中 简单定时器实现 Timer
- PHPCMS V9自定义后台登陆路径
- 15.5 对象流与序列化
- java webservice 各个方式区别
- WebStorm开发工具设置React Native智能提示
- zmq_socket