更多相关面试题可以查看 面试题系列
这道题目的答案是:不一样
先看一下在代码中的结果
不一样的原因很简单,因为他们不是同一个对象。
String str=”i”;
这句话的意思是把“i”这个值在内存中的地址赋给str,如果再有String str3=”i”;那么这句话的操作也是把“i”这个值在内存中的地址赋给str3,这两个引用的是同一个地址值,他们两个共享同一个内存。
而String str2 = new String(“i”);
则是将new String(“i”);的对象地址赋给str2,需要注意的是这句话是新创建了一个对象。如果再有String str4= new String(“i”);那么相当于又创建了一个新的对象,然后将对象的地址值赋给str4,虽然str2的值和str4的值是相同的,但是他们依然不是同一个对象了。
需要注意的是:String str=”i”; 因为String 是final类型的,所以“i”应该是在常量池。
而new String(“i”);则是新建对象放到堆内存中。
欢迎加微信一起学习交流
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/97071.html