为了账号安全,请及时绑定邮箱和手机立即绑定

求助大神们,Java问题

求助大神们,Java问题

TGP 2017-06-30 11:06:57
我的问题是:我在for循环外创建的student对象s1,用循环进行赋值 为什么 两次赋值s1的哈希码是一样,但s1.id的哈希码却不一样???
查看完整描述

3 回答

?
小_六_

TA贡献1条经验 获得超0个赞

因为在循环前student的对象已经创建,已经分配好了内存地址,对象是地址引用,在循环中只是对这个对象的属性进行修改 ,所以s1的内存地址是不变的,只是s1对应内存地址中的实际内容变了;更改id属性时,要新建一个属性对应的内存地址,因为有新对象生成,所以对应的地址就变了; --新手见解,错了勿怪~~

查看完整回答
反对 回复 2017-07-01
?
Demo丶yk

TA贡献1条经验 获得超0个赞

这么说吧,你全程只有一个s1对象,你说地址相不相同?id是属性,每次循环赋值后怎么可能相同?你不用循环这种方式创建试试,你就懂了。

查看完整回答
反对 回复 2017-06-30
?
爱吃豆角的虫子

TA贡献22条经验 获得超6个赞

id(学号)不一样,哈希码怎么会是一样? 对象的哈希码一样,是因为对象没变化啊,从你 Student s1 = new Student(); 

这个创建之后它的物理地址就没有变化,除非你在for 循环里 再new 一个 (s1 = new Student();)

查看完整回答
反对 回复 2017-06-30
?
MR帽子先生

TA贡献245条经验 获得超106个赞

rgba(0,0,0,0.6):IE8及以下版本的浏览器并不识别这种写法

需要使用ie的filter来解决这个问题

<div style="height:100px;width:100px;rgba(0, 0, 0,0.6);filter:progid:DXImageTransform.Microsoft.gradient(startColorstr=#99000000,endColorstr=#99000000);"></div>

 希望对你有帮助,祝你学习愉快。

如果决绝问题,务必采纳我的回答。


查看完整回答
反对 回复 2017-06-30
  • 3 回答
  • 1 关注
  • 2591 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信