当我将一个静态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
  }
}

10-04 17:58