Java 为什么在一个方法中比较字符串不';不行?

Java 为什么在一个方法中比较字符串不';不行?,java,string,Java,String,我有两个类,第二个类的对象是在第一个类中创建的。我正在使用next()方法增加秒的值,然后我想检查它的值是否为0,并且使用.equals(“0”)方法无法通过 我正在用Eclipse、Java11编写 public void tick(){ seconds.next(); //var "seconds" is of type second class(calling // seconds means toString() fr

我有两个类,第二个类的对象是在第一个类中创建的。我正在使用next()方法增加秒的值,然后我想检查它的值是否为0,并且使用.equals(“0”)方法无法通过

我正在用Eclipse、Java11编写

public void tick(){
      seconds.next(); //var "seconds" is of type second class(calling 
                       //      seconds means toString() from 2nd class)
      if(seconds.equals("0")) { 
          System.out.println("CANNOT ACCESS THIS ????");
      }
第二个类中的方法next():

public void next() {
        if(value==upperLimit)   value=0;
        else ++value;
    }

    public String toString() {
        return value+"";
    }

我希望在tick()方法中首先运行if语句,但事实并非如此。

根据您的代码的结构,您误用Java字符串来实现更好的直接功能(即使用OOP技术或其他数据类型)

seconds.equals(“0”)
实际上不会导致隐式调用
toString
。相反,它只是为
第二个
类调用
equals
方法;在这种情况下,您没有定义它,因此使用默认值(引用相等)。显然,您的
第二个
实例的引用不等于字符串
“0”

使用
if(second.value==0)
if
value
可以从类外访问,或者创建一个getter:

int getValue() { return value; }
并使用
if(second.getValue()==0)


如果确实要比较字符串,可以使用
seconds.toString().equals(“0”)
;这将显式地使用
toString
方法将实例转换为字符串。然后在
java.lang.String
对象上调用
equals()
,该对象实际上使用了字符串相等逻辑。

我想你在寻找
seconds.toString().equals(“0”)
,你无法将
seconds
类与
String
类进行比较。这就是我一直在寻找的答案,谢谢!很明显,你可以将
秒数
与一个字符串进行比较——这不是他们想要在这里(或者可能在任何地方)进行的比较