java - java中的引用相等是否意味着字符串的结构相等?

标签 java string reference equality

换句话说,如果我有两个变量:

String s;
String t;

这样s == t,那么s.equals(t)就保证返回true吗?

我认为这个问题的答案显然是肯定的,但这是我的教授为入门编程类(class)期末考试提供的练习考试,他说事实并非如此。想法?

我意识到它们可能为 null,因此引用相等,但您无法对它们调用 .equals

最佳答案

== 表示指向两个对象的指针相同。这意味着对象包含在同一内存位置。如果这是真的,那么它们是同一个对象并且必须具有相同的值,因此 .equals() 也将为 true。

请注意,反之则不然 - .equals() 为 true 并不能保证 == 为 true。

唯一的异常(exception)是,如果您重写 .equals() 方法以始终返回 false,或者两个对象都为 null

关于java - java中的引用相等是否意味着字符串的结构相等?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37106158/

相关文章:

java - 如何在Java包中查找实例变量的所有初始化?

java - org.springframework.web.client.HttpClientErrorException 400 RestTemplate.postForEntity

java - 从接口(interface)返回抽象类好吗

java - 错误 : Main method not found in class java. lang.String

c# - 如何将字符串中间的字母大写?

C 查询字符串解析

c - 将非空字符串传递给 snprintf 会导致不相关的 char* 数组更改地址

c++ - 从返回指针的方法中获取指针的地址

visual-studio-2010 - 在大型 VS 解决方案中自动添加引用

C++ 返回一个 std::string &