|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
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也只是刚起步的阶段,只是在学习中有了点想法就写出来了,现在俺本科还没毕业,所以对大型项目基本上也没有什么经验。 |
|