« | August 2025 | » | 日 | 一 | 二 | 三 | 四 | 五 | 六 | | | | | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | | | | | | | |
| 公告 |
戒除浮躁,读好书,交益友 |
Blog信息 |
blog名称:邢红瑞的blog 日志总数:523 评论数量:1142 留言数量:0 访问次数:9701075 建立时间:2004年12月20日 |

| |
[java语言]java中的Boxing和unboxing 原创空间, 软件技术
邢红瑞 发表于 2007/6/8 16:00:58 |
最近给替一个朋友出的几道java的面试题,主要是面试java高级工程师,报酬就是晚饭,已经沦落的卖艺的境地。题目很简单 Integer i1 = 100; Integer i2 = 100; Integer i3 = 1000; Integer i4 = 1000; System.out.println(i1==i2); System.out.println(i3==i4);很遗憾,没有一个答对的,正确答案是truefalse如果面试者写这样的写是错误的,就算通过。这个的原因要从java5的Boxing和unboxing谈起,boxing就是封装基本类型的对象,unboxing就是转换对象到基本类型。Integer, Long, Float, Double, Short, Character etc.都是这样的类型他们是immutable。Boxing在jdk1.4.2中,必须是// Assigning primitive type to wrapper type Integer iWrapper = new Integer(10);java5中 // Assigning primitive type to wrapper type Integer iWrapper = 10;unboxing在jdk1.4.2中,int iPrimitive = iWrapper.intValue();java5中int iPrimitive = iWrapper;下面是基本类型作为对象存储的范围,boolean values true and false All byte values short values between -128 and 127 int values between -128 and 127 char in the range \u0000 to \u007F 如果int values between -128 and 127,VM使用相同的对象,否则创建新的对象。所以这段代码,大家不要奇怪System.out.println(0L == 0);System.out.println(((Long)0L).equals(0));第二行代码是0不等于0因为大家犯这样的一个错误 static private final String LOCK = "LOCK"; void testMethod() { synchronized(LOCK) { ... } }应该用new,不要直接=,对于int,最好使用int a[0] ,因为array也是对象,不像Integer,a[0]的值可以改变。 |
|
回复:java中的Boxing和unboxing 原创空间, 软件技术
Nurhachi(游客)发表评论于2007/6/20 17:58:52 |
为什么在超过一个字节的时候才创建新对象?为什么超过一个字节就不可以共用同一个对象 |
|
回复:java中的Boxing和unboxing 原创空间, 软件技术
patrick(游客)发表评论于2007/6/13 23:07:48 |
|
回复:java中的Boxing和unboxing 原创空间, 软件技术
piper(游客)发表评论于2007/6/13 22:54:11 |
老大,
我怎么还没有看明白啊,你能不能说的明白点啊? |
|
» 1 »
|