Java 为什么在一个方法中比较字符串不';不行?
我有两个类,第二个类的对象是在第一个类中创建的。我正在使用next()方法增加秒的值,然后我想检查它的值是否为0,并且使用.equals(“0”)方法无法通过 我正在用Eclipse、Java11编写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
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)
ifvalue
可以从类外访问,或者创建一个getter:
int getValue() { return value; }
并使用if(second.getValue()==0)
如果确实要比较字符串,可以使用
seconds.toString().equals(“0”)
;这将显式地使用toString
方法将实例转换为字符串。然后在java.lang.String
对象上调用equals()
,该对象实际上使用了字符串相等逻辑。我想你在寻找seconds.toString().equals(“0”)
,你无法将seconds
类与String
类进行比较。这就是我一直在寻找的答案,谢谢!很明显,你可以将秒数
与一个字符串进行比较——这不是他们想要在这里(或者可能在任何地方)进行的比较