我目前正在大学学习 Java 类(class)。这是我的第一堂编程课,我偶然发现了一些我无法理解的东西。据我所知,有两种比较变量的方法。第一个是使用 ==
, !=
, <
, >
, =<
, >=
原始变量的符号,例如 int、double 等。第二种方法是对引用类型使用 .equals() 方法。现在这是我的问题:
当我使用 .getClass()
方法,我可以用 .equals() 方法和 ==
比较两个类/!=
方法。因为我可以使用 ==
/!=
迹象,我想 .getClass()
返回对象类的方法必须返回原始类型。但是在谷歌上搜索我在 java API 中发现的关于这个方法的唯一一件事就是它返回一个对象的类。它没有告诉我它返回的变量类型。这种方法究竟是如何工作的。它返回什么?我试图问我的老师,但她不知道。谢谢!
最佳答案
你首先需要知道如何==
和 !=
比较两个操作数。为什么==
和 !=
不能用于比较引用类型的原因在于它们实际上比较的是两个引用类型变量的内存地址。
所以如果我有两个字符串:
String x = "Hello";
String y = x;
自 x
和 y
第二行执行后共享相同的内存地址,x == y
计算结果为真。
getClass()
也是如此方法。 getClass()
方法返回对象的类作为 Class<T>
目的。问题是,为什么这个计算结果为真:
x.getClass() == y.getClass()
答案很简单。因为x
和 y
都是 String
类型.所以打电话getClass
将返回相同的实例。这意味着两个返回的对象共享相同的内存地址。
“但是当我使用 ==
运算符比较具有相同字符的字符串时,它的计算结果为假!”你喊道。
这是因为字符串位于不同的内存地址。但是类 getClass
如果它们表示的类相同,则将返回始终位于相同的内存地址。这是由于方式 ClassLoader
作品。但我不是这方面的专家。
你只需要知道getClass返回的对象在相同的内存地址,如果它们代表的类是相同的。
关于java - 有人可以向我解释 java 中的 .getClass() 方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233435/