java Integer parseInt()
2016-03-22 10:58
302 查看
先来一段代码,代码很简单的,如下:
看到代码的各位,觉得输出应该是什么样子的呢?false, false 或者 true,true,不知道的请自行调试。。。
这里代码输出的结果是:true, false
why?当我看到这个结果时,这是第一反应(果然我是菜鸟呀……),在网上搜了一下原因,本人还没有看过Integer.parseInt()的源码(粗略瞄了一眼,表示没看懂)。
这个大概的原因是:java会把常用的整数(-128 - 127)做一个缓存,所以在调用parseInt(“3”)时,会从缓存中取到相应的数值,而大于127缓存中没有数据,所以上面的c和d会是两个不同的引用,所以不等。(这是本人的初步理解,记下来以后可以深入去看看)。
有大神用源码解释一下的么,哈哈……
人生最可贵的事情是sb似的坚持于追求……
public static void main(String[] args) { Integer a = Integer.parseInt("3"); Integer b = Integer.parseInt("3"); Integer c = Integer.parseInt("184"); Integer d = Integer.parseInt("184"); System.out.println(a == b); System.out.println(c == d); }
看到代码的各位,觉得输出应该是什么样子的呢?false, false 或者 true,true,不知道的请自行调试。。。
这里代码输出的结果是:true, false
why?当我看到这个结果时,这是第一反应(果然我是菜鸟呀……),在网上搜了一下原因,本人还没有看过Integer.parseInt()的源码(粗略瞄了一眼,表示没看懂)。
这个大概的原因是:java会把常用的整数(-128 - 127)做一个缓存,所以在调用parseInt(“3”)时,会从缓存中取到相应的数值,而大于127缓存中没有数据,所以上面的c和d会是两个不同的引用,所以不等。(这是本人的初步理解,记下来以后可以深入去看看)。
有大神用源码解释一下的么,哈哈……
人生最可贵的事情是sb似的坚持于追求……
相关文章推荐
- Java学习笔记--四大核心
- Spring事务配置的五种方式
- java多线程状态
- Spring 一二事(3) - 别名
- eclipse从数据库获取数据时控制台乱码问题
- Java多线程异步调度程序分析(二)
- Spring 一二事(2)
- eclipse启动无响应,停留在Loading状态
- java基础 - 位运算符
- Leetcode: 165. Compare Version Numbers(JAVA)
- 对Java多态性的理解
- Struts 有哪些经常使用标签库
- wget 官方jdk
- Spring Security(06)——AuthenticationProvider
- Spring MVC 流程图
- eclipse 安装svn插件
- java基础第四天_复习运算符、进制转化和数组
- 给Java说句公道话
- Spring的AOP使用xml配置
- Eclipse 中的重构功能