【问题标题】:Java: How to compare a string to a return from toString()Java:如何将字符串与 toString() 的返回值进行比较
【发布时间】:2017-09-14 04:26:34
【问题描述】:

基本上,当我尝试使用 .equals 将类与字符串进行比较时,它始终返回 false。

例如:

myClass.java

public String toString()
{
    return "Apple";
}

main.java

System.out.println(myClass.equals("Apple"));

将打印“false”。

我应该用什么来比较 myClass 和字符串?

【问题讨论】:

  • myClass.toString().equals("Apple").
  • 您到底想比较什么?班级名称还是什么?请举例说明,哪种情况为真,哪种情况为假。
  • 覆盖方法toString()equals()然后使用equal()进行比较

标签: java string class


【解决方案1】:

您需要覆盖 Object 类的定义:

@Override
public String toString() {
  return "Apple";
}

然后比较

System.out.println(myClass.toString().equals("Apple"));

其中myClass 应是MyClass 的实例,使用code conventions

【讨论】:

    【解决方案2】:

    你应该调用toString,而不是直接调用class。

    myClass mc= new myClass();
    if(mc.toString().equals("Apple"){
    
    }
    

    顺便说一句,Java 类名以大写字母开头。例如。 MyClass

    【讨论】:

    • 我的实际课程确实以大写字母开头,这只是一个匆忙输入的示例(抱歉)。这行得通,谢谢!你知道我为什么需要这样做,但是如果我打印课程,它会打印“Apple”?
    • 打印时会自动调用.toString(),其他地方不会。
    【解决方案3】:

    你实际上可以实现 equals -

    public boolean equals(Object object) {
        if(object instanceof String) {
            return ((String)object).equals(mName);
        }
        return false;
    }
    

    mName 是包含其名称的类的成员。

    【讨论】:

      【解决方案4】:

      我认为 toString 会被自动调用的假设是错误的。

      对于其他想知道的人:

      System.out.println(myClass.toString().equals("Apple"));
      

      【讨论】:

        【解决方案5】:

        试试这个方法...对我有用..

         @Override
            public String toString() {
               return "Address: " + address+ ", streetName=" + stName ;
            }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-20
          • 2010-10-06
          • 2021-03-29
          • 1970-01-01
          • 1970-01-01
          • 2021-09-04
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多