当我将静态 int 的 value++ 分配给另一个 int 时,它执行分配的顺序似乎不遵循 Java 的操作顺序。它不应该在++
之前做=
吗?
public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id=lastID++;
}
}
在我构建的第一本书中,id 是 0。不应该是 1,因为lastID++
应该首先发生吗?
当我将静态 int 的 value++ 分配给另一个 int 时,它执行分配的顺序似乎不遵循 Java 的操作顺序。它不应该在++
之前做=
吗?
public class Book
{
private int id;
private static int lastID = 0;
public Book ()
{
id=lastID++;
}
}
在我构建的第一本书中,id 是 0。不应该是 1,因为lastID++
应该首先发生吗?
您正在使用后缀++
运算符。这将在使用变量后递增(在您的情况下是赋值)。
如果你想在分配之前增加使用这个
id = ++lastID;
这称为前缀++
运算符。
它不应该在=之前做++吗?
--> Yes++
首先评估如下:
你的表情:
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
}
}
lastID++;
使用后自增运算符,顾名思义,您lastID
首先使用 的当前值(分配给id
),然后将 的值lastID
加 1。
在大多数编程语言中,您可以使用 ++var 和 var++。
++var 立即增加变量的值,而 var++ while 增加变量的值,但返回之前的值。
lastID++
返回lastId
增量之前的值。
如果你想id
也被递增,也就是得到lastID
递增后的值,使用
id = ++lastID;
编号id = lastID++
会影响lastID
到id
,然后递增lastID
。
尝试
id = ++lastID;
这将做相反的事情(增加,并影响tolastID
的新值)。lastID
id