java中hashcode方法

classA(){Stringname="abc";A(Stringname){thisname=name;}publicinthashcode(){returnname... class A(){
String name="abc";
A(String name){
this name=name;
}
public int hashcode(){
return name.hashCode();
}
public static void main(String[] args){
A a=new A(“abcd”);
A a1=new A("abcd");
A a2=new A();
A a3=newA();
}
}
我的问题是a与a1的哈希值同不同,a2与a3的哈希值同不同,求解释清楚,还有这两个abcd是不是在main方法的栈真中,是不是同一个对象?这两个abc是不是在堆区的不同对象中,求大神告诉我,等不到答案,我不睡了。。。。。还有最后一个,默认的哈希值是不是就是地址而已,它是怎么算的,jvm自己算的吗?????详细回答的我给50
展开
 我来答
育知同创教育
2018-07-28 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
展开全部
从一般角度来看,Equality 是不错的,但是 hash code 更则具技巧性。如果我们在 hash code上多下点功夫,我们就能了解到 hash code 就是用在细微处去提升性能的。
大部分的数据结构使用equals去检查是否他们包含一个元素。例如:
List<String> list = Arrays.asList("a", "b", "c");
boolean contains = list.contains("b");

这个变量 contains 是true。因为他们是相等的,虽然b的实例化(instance)虽然不完全一样(再说一次,忽略String interning)。

将传递给 contains 的实例与每个元素进行比较很浪费时间。还好,整个这类数据结构使用了一种更高效的方法。它不会将请求的实例与每个元素比较,而是使用捷径,找到可能与之相等的实例,然后只比较这几项。
这个捷径就是哈希码——从对象计算出来的一个能代表该对象的整数值。与哈希码相同的实例不必相等,但相等的实例一定有相同的哈希码。(或者说应该有,我们稍后会对这个问题进行简单讨论)。这类的数据结构常常使用这种技术命名,在名称中加入 Hash 以便识别,其中最具代表性的就是 HashMap。
Monubia
推荐于2016-10-07 · TA获得超过8962个赞
知道大有可为答主
回答量:4373
采纳率:75%
帮助的人:1349万
展开全部

后面带不带参数,区别就是调用不同的构造方法,对不对name重新进行赋值


public class A {

String name="abc";

A(String name){
this.name=name;
}

public A() {
// TODO Auto-generated constructor stub
}

public int getHashcode(){
return name.hashCode();
}

public static void main(String[] args) {
A a=new A("abcd");
System.out.println(a.getHashcode());
    A a1=new A("abcd");
    System.out.println(a1.getHashcode());
    A a2=new A();
    System.out.println(a2.getHashcode());
    A a3=new A();
    System.out.println(a3.getHashcode());
}
}



打印输出结果:

2987074
2987074
96354
96354
更多追问追答
追问
这个两个abc地址相同吗?两个abcd地址相同吗?为什么?
追答
不是同一个对象了,你再次new了一个,那么这个name的地址就和上一个对象的地址不一样
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式