当我将一个静态int的value ++分配给另一个int时,它执行的分配顺序似乎并不遵循Java的操作顺序。它不应该在++
之前执行=
吗?
public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id=lastID++;
}
}
在我编写的第一本书中,id为0。因为
lastID++
应该首先出现,所以它不应该为1吗? 最佳答案
它不应该在=之前执行++吗?
->是,首先评估++
,如下所示:
您的表情:
id = lastID++;
等效于以下表达式
temp = lastId; // temp is 0
lastID = lastID + 1; // increament, lastId becomes 1
id = temp; // assign old value i.e. 0
因此,您具有
id as 0
,在这种情况下,应使用前隐式运算符(++)作为:public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id = ++lastID; // pre-increament
}
}