最近在求职面试中,我被问到以下问题(针对Java):
鉴于:
String s1 = "abc";
String s2 = "abc";
Run Code Online (Sandbox Code Playgroud)
什么是回报值
(s1 == s2)
Run Code Online (Sandbox Code Playgroud)
我回答它会返回false,因为它们是两个不同的对象,==是内存地址比较而不是值比较,并且需要使用.equals()来比较String对象.然而,我被告知虽然.equals(0方法是正确的,但声明仍然是真的.我想知道是否有人可以向我解释为什么它是真的,但为什么我们仍然在学校教授使用equals() ?
java将实习两个字符串,因为它们都具有相同的值,只有一个实际的字符串实例将存在于内存中 - 这就是为什么==将返回true - 两个引用都指向同一个实例.
字符串实习是一种优化技术,用于最小化必须保存在内存中的字符串实例的数量.作为常量表达式值的字符串文字或字符串被实现,以便共享唯一的实例.认为flyweight模式.
| 归档时间: |
|
| 查看次数: |
335 次 |
| 最近记录: |