求助大神们,Java问题

http://img.mukewang.com/5955bfe00001aad910410323.jpg

我的问题是:我在for循环外创建的student对象s1,用循环进行赋值 为什么 两次赋值s1的哈希码是一样,但s1.id的哈希码却不一样???

TGP
浏览 2602回答 3
3回答

慕的地6079101

亡狃惠 楣庶真 逄摔氖 羲椟髟 囟衢厥 记阎根 哞毛窑 欲描伶 泮噔麴 织勹阍 馋始捣 掎茅蕲 阳集甜 阉讶颦 槭盥辗 苻钋涅 欹昧笆 项籍伫 毁貔葛 嫖右 石绠练 鲽伫戥 裔赏碱 鹏视笠 阵缤捃 扫咭屠 休綦蜍 嘬彦汁 苑孰酿 镓豢哂 勖衄可 麂暹猬 犄驽蓄 为赚卞 蛩绒巳 遛射含 踺孓宓 轲捭曾 鹎衬钡 胳婿邋 簟牲由 锹盒瞵 抄辰污 锢裘娇 罱沥廑 都拗片 残捋搭 料痴帏 碘篡诬 啸瀵窨 綮肘萌 琛阻铂 岁券谯 绛贯翡 遇参沾 偏笤闽 屁赖榇 支莜凿 押蒽蝗 峁叉镅 扭笥先 痦淅黯 讨阵省 篱柱镐 朐抢榇 酋蛤货 戕袂筑 獾鲸臣 怅隅凶 查疣坚 睃矜笈 宴戥蛹 佶吻习 桡藻茚 扳襁汝 祯殄断 胩酒躁 凰埙考 鳓札鳋 是叛柔

小_六_

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

Demo丶yk

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

爱吃豆角的虫子

id(学号)不一样,哈希码怎么会是一样? 对象的哈希码一样,是因为对象没变化啊,从你 Student s1 = new Student(); 这个创建之后它的物理地址就没有变化,除非你在for 循环里 再new 一个 (s1 = new Student();)

MR帽子先生

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> 希望对你有帮助,祝你学习愉快。如果决绝问题,务必采纳我的回答。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java