当我将静态int的值++分配给另一个int时,它正按照似乎不遵循Java操作顺序的顺序执行赋值。它不应该在++
之前执行=
吗?
public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id=lastID++;
}
}
在我构建的第一本书中,id为0.因为lastID++
应该先发生,所以不应该是1吗?
答案 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++
会影响lastID
到id
,然后增加lastID
。
尝试
id = ++lastID;
将执行相反的操作(增量lastID
,并影响lastID
到id
的新值。
答案 5 :(得分:1)
在大多数编程语言中,你可以做++ var和var ++。
++ var立即增加变量的值,而var ++增加变量的值,但返回上一个值。