发布于2019-08-06 10:08 阅读(927) 评论(0) 点赞(3) 收藏(2)
阿里面试问到这样一道题,
String s1 = new String("abc") ; String s2 = new String("abc");
面试官说道平常面试问s1==s2 的结果都会说false对吧,那你知道他为什么不相等吗?
按正常思路,就是 == 不仅比较的是内容还有对象的内存地址,abc在常量池中存在一份,但是两个对象的内存地址是不一样的,所以返回false;
面试官继续发问,那如果我想让两个对象 == 为true,应该怎么办???
这个确实没想到,因为内存地址都不一样,==怎么会为true,但还是硬着头皮说了,此处就不列出回答的啥了(反正是答非所问,不混淆各位了),事后还一度怀疑这是不是故意刨了个坑,我入坑了吗?两个对象 == 为true?内存地址都不一样,除非重写==,但是重写了== ,==还是==吗??
事隔几天后和别人交流到这个问题,给了个思路 字符串的intern()方法
了解了一下,这个虽然也不是两个对象 ==比较是否为true。但是可以一个设置字符串,一个为对象,对象调用intern()方法,让两者==为true。突然明白,可能面试官考察的是同一个字符串反复出现,如何节省内存空间的问题。我一直纠结在了 两个new对象 == 为true上......
下面贴上原文,很浅显易懂啦,只是知识储备量还不到这里,备注一下,有助温故知新
作者:小乖乖
链接:https://www.pythonheidong.com/blog/article/7476/70eede028b54021beac1/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!