黑马程序员——对一道论坛题目的思考
来源:互联网 发布:messageutil.java 编辑:程序博客网 时间:2024/05/01 23:27
------- android培训、java培训、期待与您交流! ----------
在黑马论坛上看到这样一道题:判断最终结果是true还是false。
代码片段1
Java代码
public static void main(final String[] args) {
Integer a = new Integer(100);
Integer b = 100;
System.out.println(a == b);
代码片段2
Java代码
public static void main(final String[] args) {
Integer a = 100;
Integer b = 100;
System.out.println(a == b);
代码片段3
Java代码
public static void main(final String[] args) {
Integer a = 156;
Integer b = 156;
System.out.println(a == b);
}
代码片段4
Java代码
public static void main(final String[] args) {
Integer a = Integer.valueOf(100);
Integer b = 100;
System.out.println(a == b);
}
一开始我通过网上查找资料,得出了答案。
代码片段1 是false
代码片段2是true。
代码片段3 是false
代码片段4 为true
后来看视频到基本数据类型包装新特性后才发现自己一开始,想的还是有些浅显了,虽然答案都是对的,但理解的并不深入。问题涉及到了好几个知识点,首先是
==是比较的两边是否指向同一个对象,其次Integer a=100其实就相当于
Integer a = new Integer(100),因为1.5出的新特性自动加包,直接将100封装为了对象,
所以Integer a = 100;和Integer b = 100;其实也应该相当于两个对象,之所以a,b指向了同一个对象,是因为java为了提高效率,初始化了-128--127之间的整数对象,所以在赋值
在这个范围内都是同一个对象。
当数值超过后就是代码3的情况了:
Integer a = 156; 等效于Integera = new Integer(150);
Integer b = 156; 等效于Integer a = new Integer(150);
所向指向的是两个对象。
而代码4,等效于代码2,Integer a = Integer.valueOf(100);相当于Integer a = 100在经过编译后的状态
-------android培训、java培训、期待与您交流!----------
详细请查看:http://edu.csdn.net/heima/
- 黑马程序员——对一道论坛题目的思考
- 黑马程序员——今天在黑马论坛看到有人问打印螺旋矩阵的题目
- 黑马程序员——实现论坛无刷新的评论
- 一道简单的题目引发的思考
- 一道简单的题目引发的思考
- ssd上一道题目引发的思考
- 一道题目引发的多角度思考
- 一道socket题目引发的思考
- 一道笔试题目引发的思考
- 一道链表题目的思考
- 一道面试题目引发的思考
- 一道面试题目引发的思考
- 一道面试题目引发的思考
- 一道需要完备逻辑思考的小Java题目(对入小白)
- 黑马程序员——对于懒汉式的思考
- 黑马程序员——关于HashSet的思考
- 对程序员的思考
- 对一道微软面试题的思考
- 杭电OJ2191---------------------悼念512汶川大地震遇难同胞 -------多重背包
- 8月10日
- 在.NET 2.0框架下动态创建Access数据库和表时的注意事项 (zz)
- 广义表
- 时间对象使用心得
- 黑马程序员——对一道论坛题目的思考
- Redis 与Mysql通信
- hdu 2549
- 栈的顺序存储
- 为什么程序员不擅长评估开发时间?
- 【转】Android之TextView实现文字过长时省略部分或者滚动显示
- Ethereal协议分析系统介绍 .
- 直方图应用:直方图均衡化,直方图匹配,对比直方图
- VMware设置从光驱中引导启动Linux操作系统