Java意外类型正在进行字符串比较,奇怪

Java意外类型正在进行字符串比较,奇怪,java,string,multithreading,Java,String,Multithreading,这段代码与学习Java Oracle出版社的书中的代码完全相同,但它不起作用。我不明白为什么它不起作用,它应该起作用。我用OpenJDK和Sun JDK 7都试过了,错误是一样的 ThreadCom.java:56: error: unexpected type if (thrd.getName().compareTo("Tick") = 0) { ^ required: variable found: val

这段代码与学习Java Oracle出版社的书中的代码完全相同,但它不起作用。我不明白为什么它不起作用,它应该起作用。我用OpenJDK和Sun JDK 7都试过了,错误是一样的

ThreadCom.java:56: error: unexpected type
    if (thrd.getName().compareTo("Tick") = 0) {
                                ^
  required: variable
  found:    value
1 error
有问题的代码

class MyThread implements Runnable {
    Thread thrd;
    TickTock ttOb;

    MyThread(String name, TickTock tt) {
            thrd = new Thread(this, name);
            ttOb = tt;
            thrd.start();
    }

    public void run() {
            if (thrd.getName().compareTo("Tick") = 0) { // <- that line
                    for (int i=0; i<5; i++) ttOb.tick(true);
                    ttOb.tick(false);
            } else {
                    for (int i=0; i<5; i++) ttOb.tock(true);
                    ttOb.tock(false);
            }
    }
}
代码与书中的代码完全相同。

thrd.getName().compareTo("Tick") = 0
应该是

thrd.getName().compareTo("Tick") == 0
if (thrd.getName().compareTo("Tick") == 0)

第一个是作业。第二个是比较。

我忘记了双等于,只是注意到了

if (thrd.getName().compareTo("Tick") = 0)
应该是

thrd.getName().compareTo("Tick") == 0
if (thrd.getName().compareTo("Tick") == 0)

提示:当编译器发出警告/错误时,切换JDK是最后一个尝试的选项。因为很可能你错了,而编译器是对的。这不仅适用于初学者,也适用于所有人-我习惯了C++,两者都在工作。在if中,任务到底在做什么?在Java中,您是否可以通过将赋值放在if中来实现某些功能?这种语言的设计使我困惑。