首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >.class == .class vs .class.toString() vs .class.toString()

.class == .class vs .class.toString() vs .class.toString()
EN

Stack Overflow用户
提问于 2015-06-30 19:21:40
回答 3查看 70关注 0票数 1

我在玩Classname.class和Classname.class.toString()时发现了一些不寻常的东西。

当在同一个类上运行时,.class似乎等同于.class。虽然.class.toString() 并不等同于同一个类上的.class.toString()。为什么这会是。

请看下面的代码

代码语言:javascript
运行
复制
public class HelloWorld{

    public static void main(String []args){
        if(String.class.toString() == String.class.toString())
            System.out.println("toString(): Yes they are the same");
        else
            System.out.println("toString(): They are not the same ?");

        System.out.println("=============================");

        if(String.class == String.class)
            System.out.println(".class: Yes they are the same");
        else
            System.out.println(".class: They are not the same");
    }
}

输出:

代码语言:javascript
运行
复制
sh-4.3# javac HelloWorld.java                                                                                                                            
sh-4.3# java -Xmx128M -Xms16M HelloWorld       

toString(): They are not the same ?                                                                                                                      
=============================                                                                                                                            
.class: Yes they are the same
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-06-30 19:22:50

因为您不使用==运算符来比较字符串。使用.equals()方法代替。

票数 4
EN

Stack Overflow用户

发布于 2015-06-30 19:23:41

为什么您期望一个toString()调用会返回与第二个调用完全相同的对象?Object.toString()Class.toString()都没有在它们的Javadoc文档中指定在后续调用中将返回相同的String对象。

如果没有其他理由,就必须假定String实例必须与equals()进行比较这一默认约定。

票数 2
EN

Stack Overflow用户

发布于 2015-06-30 20:16:32

在这里,您比较的是引用,而不是字符串内容,并且引用不是相等的。

代码语言:javascript
运行
复制
String.class.toString() == String.class.toString()

您必须与等价者进行比较:

代码语言:javascript
运行
复制
String.class.toString().equals(String.class.toString())

也可以将其与字符串的高级特性进行比较,如下所示:

代码语言:javascript
运行
复制
String.class.toString().intern() == String.class.toString().intern()
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31146673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档