直接分配或控制与分配

时间:2014-12-15 14:47:23

标签: java variable-assignment

我有一个游戏循环

class Game extends Runnable {
    private boolean running = false;

    @Override
    public void run() {
        running = true;
        while(running) {
             //...
        }
    }
}

我在考虑在此之前是否更好(在游戏循环中)直接分配给变量或具有if的控件。例如:

x = true;

if(!x) x = true;

2 个答案:

答案 0 :(得分:3)

他们做同样的事情,但第一个更容易阅读,并且不需要if语句。

x = true;
//x is now true

if(!x) x = true;
//x is true if x wasn't true, if x was true before it is still true

答案 1 :(得分:3)

if (!x) x = true; 确保x在声明结尾处为真。这是因为另一个线程可能会在您测试它和绕过分配之间将x设置为false

为了安全起见,设置x = true,无论如何都会更快。

从技术上讲,if (!x) x = true;在Java中不是原子,但是x = true是。