Java赋值静态变量

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

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

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

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

解决方法

Shouldn’t it do the ++ before the =?

– >是首先评估如下:

你的表达:

id = lastID++;

等同于以下表达式

temp = lastId;    // temp is 0
lastID = lastID + 1;  // increament,lastId becomes 1
id = temp;   // assign old value i.e. 0

所以你的id为0,在这种情况下你应该使用pre-increament operator():

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

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

相关文章

HashMap是Java中最常用的集合类框架,也是Java语言中非常典型...
在EffectiveJava中的第 36条中建议 用 EnumSet 替代位字段,...
介绍 注解是JDK1.5版本开始引入的一个特性,用于对代码进行说...
介绍 LinkedList同时实现了List接口和Deque接口,也就是说它...
介绍 TreeSet和TreeMap在Java里有着相同的实现,前者仅仅是对...
HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进...