| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1155 人关注过本帖
标题:java问题 看了张孝祥JAVA的课题
只看楼主 加入收藏
kkllchun
Rank: 2
等 级:论坛游民
帖 子:55
专家分:13
注 册:2007-9-15
结帖率:70%
收藏
已结贴  问题点数:20 回复次数:7 
java问题 看了张孝祥JAVA的课题
//主要有两个类 以下是驱动类
import java.util.*;
public class TestHashtable {
   
    public static void main(String [] args){
        Hashtable numbers= new Hashtable();
        numbers.put(new MyKey("zhangsan",18),new Integer(1));
        numbers.put(new MyKey("lisi",19),new Integer(2));
        numbers.put(new MyKey("wangwu",20),new Integer(3));
        Enumeration e = numbers.keys();
        while(e.hasMoreElements()){
            MyKey key = (MyKey)e.nextElement();
            System.out.print(key.toString() + "="); //第一个问题 为什么key.toString中的toString加不加一样
            System.out.println(numbers.get(key));
        }
        System.out.println(numbers.get(new MyKey("zhangsan",18)));
    }
}
//-------------------以下是驱动类调用的类 MyKey---

public class MyKey {
    private String name = null;
    private int age = 0;
   
    public boolean equals(Object obj){
        if(obj instanceof MyKey){
            MyKey objTemp = (MyKey)obj;
            if(name.equals(objTemp.name) && age == objTemp.age){
                return true;
            }
            else{
                return false;
            }
        }
        else{
            return false;
        }
    }
    public String toString(){
        return name + "," + age;
    }
    public int hashCode(){
        return name.hashCode() + age; //第二个问题 为什么name可以直接调用hashCode
    }
    public MyKey(String s ,int i ){
        this.name = s;
        this.age = i;
    }
}


[ 本帖最后由 kkllchun 于 2010-2-9 17:19 编辑 ]
搜索更多相关主题的帖子: 课题 java JAVA 张孝祥 
2010-02-09 17:10
kkllchun
Rank: 2
等 级:论坛游民
帖 子:55
专家分:13
注 册:2007-9-15
收藏
得分:0 
哥看的不是JAVA  
   是寂寞!
2010-02-09 20:55
龙龙龙龙
Rank: 2
等 级:论坛游民
帖 子:1
专家分:14
注 册:2010-2-1
收藏
得分:14 
呵呵
2010-02-09 23:13
kkllchun
Rank: 2
等 级:论坛游民
帖 子:55
专家分:13
注 册:2007-9-15
收藏
得分:0 
哈哈 这论坛龟怎么那么多  结贴走人
2010-02-10 15:13
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
大家都回家过节了,呵呵

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-02-10 21:24
lampeter123
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:54
帖 子:2508
专家分:6424
注 册:2009-1-30
收藏
得分:0 
第一个问题,看来你对toString()方法并不是很了解

直接输出对象的时候,一定会执行toString()方法,当没有覆盖Object toString方法时,则默认执行Object toString()

查阅API文档:
Object类的 public String toString()   returns  
                    getClass().getName() + '@' + Integer.toHexString(hashCode())

加与不加toString结果都一样

第二个问题,hashCode就是一个散列码。一般情况下,如果hashCode相同,则equals应该也判定相等。
hashCode用来快速查询用的
你看到的那一串的格式如下,比如一个String@4e57de
"@ "前面的是你的类名,后面的就是散列码的16进制表示。hashCode的查询原理:先有很多个数组,然后你要往容器里面放东西,

[ 本帖最后由 lampeter123 于 2010-2-10 21:43 编辑 ]
收到的鲜花
  • kkllchun2010-02-11 11:04 送鲜花  5朵   附言:我很赞同

你的优秀和我的人生无关!!!!
    
    我要过的,是属于我自己的生活~~~
2010-02-10 21:32
kkllchun
Rank: 2
等 级:论坛游民
帖 子:55
专家分:13
注 册:2007-9-15
收藏
得分:0 
多谢!
2010-02-11 09:53
nicole1998
Rank: 1
等 级:新手上路
威 望:1
帖 子:29
专家分:5
注 册:2007-5-21
收藏
得分:0 
高手还是有的!
2010-03-04 03:52
快速回复:java问题 看了张孝祥JAVA的课题
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020319 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved