Java意外类型做字符串比较,很奇怪

时间:2012-12-05 14:14:38

标签: java string multithreading

此代码与学习Java(Oracle Press Books)一书中的完全相同,但它不起作用。我不明白为什么它不起作用,它应该工作。我已经尝试过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);
            }
    }
}

代码完全和书中一样。

2 个答案:

答案 0 :(得分:5)

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

应该是

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

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

答案 1 :(得分:3)

我忘记了双等号,只是注意到了它。

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

应该是

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