当我将静态int的值赋给另一个int时,它按照似乎不遵循
Java操作顺序的顺序执行赋值.不应该在=之前做吗?
public class Book { private int id; private static int lastID = 0; public Book () { id=lastID++; } }
在我构建的第一本书中,id为0.不应该是1,因为lastID应该先发生吗?
解决方法
Shouldn’t it do the ++ before the =?
– >是首先评估如下:
你的表达:
id = lastID++;
等同于以下表达式
temp = lastId; // temp is 0 lastID = lastID + 1; // increament,lastId becomes 1 id = temp; // assign old value i.e. 0
所以你的id为0,在这种情况下你应该使用pre-increament operator():
public class Book { private int id; private static int lastID = 0; public Book () { id = ++lastID; // pre-increament } }