gpt4 book ai didi

java - 有人可以向我解释 java 中的 .getClass() 方法吗

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:41:44 25 4
gpt4 key购买 nike

我目前正在大学学习 Java 类(class)。这是我的第一堂编程课,我偶然发现了一些我无法理解的东西。据我所知,有两种比较变量的方法。第一个是使用 == , != , < , > , =< , >=原始变量的符号,例如 int、double 等。第二种方法是对引用类型使用 .equals() 方法。现在这是我的问题:

当我使用 .getClass()方法,我可以用 .equals() 方法和 == 比较两个类/!=方法。因为我可以使用 ==/!=迹象,我想 .getClass()返回对象类的方法必须返回原始类型。但是在谷歌上搜索我在 java API 中发现的关于这个方法的唯一一件事就是它返回一个对象的类。它没有告诉我它返回的变量类型。这种方法究竟是如何工作的。它返回什么?我试图问我的老师,但她不知道。谢谢!

最佳答案

你首先需要知道如何==!=比较两个操作数。为什么==!=不能用于比较引用类型的原因在于它们实际上比较的是两个引用类型变量的内存地址

所以如果我有两个字符串:

String x = "Hello";
String y = x;

xy第二行执行后共享相同的内存地址,x == y计算结果为真。

getClass() 也是如此方法。 getClass()方法返回对象的类作为 Class<T>目的。问题是,为什么这个计算结果为真:

x.getClass() == y.getClass()

答案很简单。因为xy都是 String 类型.所以打电话getClass将返回相同的实例。这意味着两个返回的对象共享相同的内存地址。

“但是当我使用 == 运算符比较具有相同字符的字符串时,它的计算结果为假!”你喊道。

这是因为字符串位于不同的内存地址。但是类 getClass如果它们表示的类相同,则将返回始终位于相同的内存地址。这是由于方式 ClassLoader作品。但我不是这方面的专家。

你只需要知道getClass返回的对象在相同的内存地址,如果它们代表的类是相同的。

关于java - 有人可以向我解释 java 中的 .getClass() 方法吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36233435/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com