微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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
  }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐