3

staticintのvalue++を別のintに割り当てると、Javaの操作の順序に従わないように見える順序で割り当てが実行されます。++前にやるべきではない=ですか?

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

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

私が作成した最初の本では、idは0lastID++です。最初に発生するはずなので、1にするべきではありませんか?

4

6 に答える 6

5

接尾辞++演算子を使用しています。これは、変数が使用された後に増分します(あなたの場合は割り当てです)。

割り当ての前にインクリメントしたい場合は、これを使用してください

id = ++lastID;

これはプレフィックス++演算子として知られています。

于 2012-12-13T13:42:06.413 に答える
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 operator(++)を次のように使用する必要があります。

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

  public Book ()
  {
    id = ++lastID; // pre-increament
  }
}
于 2012-12-13T13:54:41.323 に答える
2

lastID++;名前が示すように、最初に(に割り当てられている)の現在の値を使用し、次に1ずつインクリメントされた値を使用するため、ポストインクリメント演算子を使用します。lastIDidlastID

于 2012-12-13T13:41:15.237 に答える
1

lastID++lastId増分前の値を返します。

インクリメントしたい場合id、つまりインクリメント後の値を取得したい場合は、次lastIDを使用します。

id = ++lastID;
于 2012-12-13T13:39:14.900 に答える
1

番号id = lastID++はに影響lastIDid、その後増分しますlastID

試す

id = ++lastID;

これは逆のことをします(インクリメントし、 tolastIDの新しい値に影響します)。lastIDid

于 2012-12-13T13:39:57.097 に答える
1

ほとんどのプログラミング言語では、++varとvar++を実行できます。

++ varは変数の値をすぐにインクリメントし、var ++は変数の値をインクリメントしますが、の値を返します。

于 2012-12-13T13:42:09.857 に答える