楼主: wangcunjiang

[精华] Java陷阱一箩筐----面试题集[zt]

[复制链接]
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
71#
发表于 2004-7-27 06:45 | 只看该作者
测试代码:


  1. /*
  2. * Created on 2004-7-26
  3. *
  4. * TODO To change the template for this generated file go to
  5. * Window - Preferences - Java - Code Style - Code Templates
  6. */

  7. /**
  8. * @author yiningchen
  9. *
  10. * TODO To change the template for this generated type comment go to
  11. * Window - Preferences - Java - Code Style - Code Templates
  12. */
  13. public class HashTest {
  14.        
  15.         private int id;
  16.         private String name;
  17.        
  18.         public HashTest(int id, String name)
  19.         {
  20.                 this.id = id;
  21.                 this.name = name;
  22.         }

  23.         public boolean equals(Object obj)
  24.         {
  25.                 if (obj instanceof HashTest)
  26.                 {
  27.                         return (id==((HashTest)obj).id);
  28.                 }
  29.                 else
  30.                 {
  31.                         return false;
  32.                 }
  33.         }
  34.        
  35.         public int hashCode()
  36.         {
  37.                 return (id + name.hashCode());
  38.         }
  39.        
  40.         public static void main(String[] args)
  41.         {
  42.                 HashTest obj1 = new HashTest(1, "abc");
  43.                 HashTest obj2 = new HashTest(1, "def");
  44.                
  45.                 System.out.println("obj1==obj2: " + obj1.equals(obj2));
  46.                 System.out.println("obj1 hash: " + obj1.hashCode());
  47.                 System.out.println("obj2 hash: " + obj2.hashCode());
  48.         }
  49. }
复制代码

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
72#
发表于 2004-7-27 06:47 | 只看该作者
运行结果:

obj1==obj2: true
obj1 hash: 96355
obj2 hash: 99334

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
73#
发表于 2004-7-27 06:49 | 只看该作者
虽然运行成功,但是这只是一个纯技巧问题,在实际应用中,我还没有想到这种用法的作用,以及可能引起的副作用。

使用道具 举报

回复
论坛徽章:
39
ITPUB元老
日期:2005-10-13 10:38:002012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB官方微博粉丝徽章
日期:2011-07-04 09:42:062011新春纪念徽章
日期:2011-02-18 11:43:352011新春纪念徽章
日期:2011-01-04 10:36:17ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022010新春纪念徽章
日期:2010-03-01 11:07:27祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:282008新春纪念徽章
日期:2008-02-13 12:43:03
74#
 楼主| 发表于 2004-7-27 09:52 | 只看该作者
obj1==obj2: true
obj1 hash: 96355
obj2 hash: 99334

实际上两个对象并不相同啊!?

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
75#
发表于 2004-7-27 10:57 | 只看该作者
第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

两个对象确实不一样。不过,这里的要求只是x.equals(y)成立,而且有不同的hash code啊。

使用道具 举报

回复
论坛徽章:
39
ITPUB元老
日期:2005-10-13 10:38:002012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB官方微博粉丝徽章
日期:2011-07-04 09:42:062011新春纪念徽章
日期:2011-02-18 11:43:352011新春纪念徽章
日期:2011-01-04 10:36:17ITPUB9周年纪念徽章
日期:2010-10-08 09:34:022010新春纪念徽章
日期:2010-03-01 11:07:27祖国60周年纪念徽章
日期:2009-10-09 08:28:002009新春纪念徽章
日期:2009-01-04 14:52:282008新春纪念徽章
日期:2008-02-13 12:43:03
76#
 楼主| 发表于 2004-7-27 14:11 | 只看该作者
最初由 yining 发布
[B]第二十九,两个对象值相同(x.equals(y) == true),但却可有不同的hash code,这句话对不对?

两个对象确实不一样。不过,这里的要求只是x.equals(y)成立,而且有不同的hash code啊。 [/B]


技巧!

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
77#
发表于 2004-7-27 14:18 | 只看该作者
最初由 wangcunjiang 发布
[B]

技巧! [/B]

最初由 yining 发布
虽然运行成功,但是这只是一个纯技巧问题,在实际应用中,我还没有想到这种用法的作用,以及可能引起的副作用。

使用道具 举报

回复
论坛徽章:
0
78#
发表于 2004-7-28 15:09 | 只看该作者
I think the difference between the sleep() and wati() is the sleep() will keep the object lock, however the wait() will release the object lock.

使用道具 举报

回复
论坛徽章:
0
79#
发表于 2004-7-28 15:11 | 只看该作者
for (x.equals(y) == true), if you override the equals() in the class of x, say X, then x.equal() will call your function and will not compare them with hashcode

使用道具 举报

回复
论坛徽章:
55
生肖徽章:虎
日期:2006-09-06 21:14:232011新春纪念徽章
日期:2011-01-25 15:41:502011新春纪念徽章
日期:2011-01-25 15:42:152011新春纪念徽章
日期:2011-01-25 15:42:332011新春纪念徽章
日期:2011-01-25 15:42:56管理团队成员
日期:2011-05-07 01:45:082012新春纪念徽章
日期:2012-01-04 11:49:542012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:182012新春纪念徽章
日期:2012-02-13 15:11:18
80#
发表于 2004-7-28 15:22 | 只看该作者
我觉得sleep应该也释放lock。否则不是太危险了?Sun之所以把stop()这些变成deprecated,原因就是容易造成死锁。

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表