Java赋值静态变量++

时间:2012-12-13 13:38:34

标签: java variables static variable-assignment

当我将静态int的值++分配给另一个int时,它正按照似乎不遵循Java操作顺序的顺序执行赋值。它不应该在++之前执行=吗?

public class Book
{
  private int id;
  private static int lastID = 0;

  public Book ()
  {
    id=lastID++;
  }
}

在我构建的第一本书中,id为0.因为lastID++应该先发生,所以不应该是1吗?

6 个答案:

答案 0 :(得分:5)

您使用的是postfix ++运算符。这将在使用变量后递增(在您的情况下是赋值)。

如果要在分配前增加使用此

id = ++lastID;

这称为前缀++运算符。

答案 1 :(得分:3)

  

不应该在=?

之前执行++

- >是++首先评估如下:

你的表达:

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,在这种情况下你应该使用pre-increament运算符(++):

public class Book
{
  private int id;
  private static int lastID = 0;

  public Book ()
  {
    id = ++lastID; // pre-increament
  }
}

答案 2 :(得分:2)

lastID++;使用后增量运算符,因为名称建议您首先使用当前值lastID(分配给id),然后lastID的值加1。

答案 3 :(得分:1)

lastID++返回lastId在增量之前的值。

如果您希望id也增加,即在增量后获得lastID的值,请使用

id = ++lastID;

答案 4 :(得分:1)

没有。 id = lastID++会影响lastIDid,然后增加lastID

尝试

id = ++lastID;

将执行相反的操作(增量lastID,并影响lastIDid的新值。

答案 5 :(得分:1)

在大多数编程语言中,你可以做++ var和var ++。

++ var立即增加变量的值,而var ++增加变量的值,但返回上一个值。