仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 536|回复: 11
打印 上一主题 下一主题

[学习教程] 来看Java中Object类的equals()和hashCode()办法深切剖析

[复制链接]
冷月葬花魂 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:18:02 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
windows系统样,他们做了什么事或者留了一些后门程序,谁都不知道,二,java开发是跨平台,任何系统上都可以运行,对于保密型系统和大型系统开发这是必要的
1.equals()
在初学Java的时分,良多人会说在对照对象的时分,==是对照地点,equals()是对照对象的内容,谁说的?
看看equals()办法在Object类中的界说:
public boolean equals(Object obj){
    return (this == obj);
}
这是对照内容么?分明是对照指针(地点)么...
可是为何会有equals是对照内容的这类说法呢?
由于在String、Double等封装类中,已重载(overriding)了Object类的equals()办法,因而有了另外一种盘算公式,是举行内容的对照。
好比在String类中:
public int hashCode() {
    int h = hash;
    if (h == 0) {
        char val[] = value;
        int len = count;
        for (int i = 0; i < len; i++) {
            h = 31*h + val[off++];
        }
        hash = h;
    }
    return h;
}
2.hashCode()
在Object类中的界说为:
public native int hashCode();
是一个当地办法,前往的对象的地点值。
可是,一样的思绪,在String等封装类中对此办法举行了重写。办法挪用失掉一个盘算公式失掉的int值
3.二者的干系
①两个obj,假如equals()相称,hashCode()必定相称
②两个obj,假如hashCode()相称,equals()纷歧定相称
缘故原由:从散列的角度思索,分歧的对象盘算哈希码的时分,大概引发抵触,人人必定还记得数据布局中抵触的办理计划吧
可是要这么计划,用两个函数,团体的了解是为了对照两个对象时更高效。
能够思索在Java汇合中,判别两个对象是不是相称的划定规矩是:
第一步,假如hashCode()相称,则检察第二步,不然不相称;
第二步,检察equals()是不是相称,假如相称,则两obj相称,不然仍是不相称。
为何如许做?团体的了解是让得当的函数完成得当的功效,究竟hashCode()比equals()在某种水平下去得快。

多谢指点,其实我对.net网页编程和ruby也不是很了解,对与java也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。
若天明 该用户已被删除
沙发
发表于 2015-1-18 14:43:38 | 只看该作者
是一种语言,用以产生「小应用程序(Applet(s))
板凳
发表于 2015-1-22 07:02:19 | 只看该作者
是一种突破用户端机器环境和CPU
爱飞 该用户已被删除
地板
发表于 2015-1-25 23:17:30 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
冷月葬花魂 该用户已被删除
5#
 楼主| 发表于 2015-2-2 13:02:25 | 只看该作者
Java语言支持Internet应用的开发,在基本的Java应用编程接口中有一个网络应用编程接口(java net),它提供了用于网络应用编程的类库,包括URL、URLConnection、Socket、ServerSocket等。Java的RMI(远程方法激活)机制也是开发分布式应用的重要手段。
活着的死人 该用户已被删除
6#
发表于 2015-2-7 13:02:32 | 只看该作者
是一种使网页(Web Page)由静态(Static)转变为动态(Dynamic)的语言
小妖女 该用户已被删除
7#
发表于 2015-2-9 16:34:29 | 只看该作者
至于JDBC,就不用我多说了,你如果用java编过存取数据库的程序,就应该很熟悉。还有,如果你要用Java编发送电子邮件的程序,你就得看看Javamail 了。
若相依 该用户已被删除
8#
发表于 2015-2-12 03:09:21 | 只看该作者
学Java必读的两个开源程序就是Jive和Pet Store.。 Jive是国外一个非常著名的BBS程序,完全开放源码。论坛的设计采用了很多先进的技术,如Cache、用户认证、Filter、XML等,而且论坛完全屏蔽了对数据库的访问,可以很轻易的在不同数据库中移植。论坛还有方便的安装和管理程序,这是我们平时编程时容易忽略的一部份(中国程序员一般只注重编程的技术含量,却完全不考虑用户的感受,这就是我们与国外软件的差距所在)。
老尸 该用户已被删除
9#
发表于 2015-2-21 15:12:11 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
再见西城 该用户已被删除
10#
发表于 2015-3-6 20:21:01 | 只看该作者
其实说这种话的人就如当年小日本号称“三个月拿下中国”一样大言不惭。不是Tomjava泼你冷水,你现在只是学到了Java的骨架,却还没有学到Java的精髓。接下来你得研究设计模式了。
admin 该用户已被删除
11#
发表于 2015-3-13 08:08:35 | 只看该作者
接着就是EJB了,EJB就是Enterprise JavaBean, 看名字好象它是Javabean,可是它和Javabean还是有区别的。它是一个体系结构,你可以搭建更安全、更稳定的企业应用。它的大量代码已由中间件(也就是我们常听到的 Weblogic,Websphere这些J2EE服务器)完成了,所以我们要做的程序代码量很少,大部分工作都在设计和配置中间件上。
兰色精灵 该用户已被删除
12#
发表于 2015-3-20 17:05:52 | 只看该作者
如果要向java web方向发展也要吧看看《Java web从入门到精通》学完再到《Struts2.0入门到精通》这样你差不多就把代码给学完了。有兴趣可以看一些设计模块和框架的包等等。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-27 13:33

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表