スポンサーサイト





上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

  • Comments (Close): -
  • TrackBack (Close): -

前置と後置





前置と後置の違い


今日はちょっとまぎらわしい話になりますが、インクリメント演算子 ++ とデクリメント演算子 -- は、変数numの前に書くか後ろに書くかで違いがあります。

num++(後置)
++num(前置)



実際のプログラミングでは、後置を使うことが多いかと思いますのが、今回の知識があると思わぬ落とし穴に引っかからずに済むかもしれません。

では、実際にプログラムを動かして違いを体験してみましょう。

public class Sample
{
public static void main( String[] args )
{
int a=1,b=1;

System.out.println(a++); //(1)
System.out.println(++b); //(2)

System.out.println(); //改行

System.out.println(a);
System.out.println(b);
}
}


実行結果:

1
2

2
2



なぜ、

System.out.println(a++);

が1になるのでしょうか?


出力値と現在値


さて、前置と後置の違いです。

前置は、変数に1を足してから処理を行います。処理をする「前」に1を足すのです。これに対し、後置は、処理を行った「後」に1を足します。

ですから、一連の処理を順に説明すると、

System.out.println(a++); //1を出力した後に1足して2になる
System.out.println(++b); //1に1足して2を出力する

System.out.println(); //改行

System.out.println(a); //2を出力
System.out.println(b); //2を出力

となります。

前置と後置の違いが分からなくなったときは、出力値と現在値とを分けて考えるといいと思います。

//(1) 出力1、後置なので現在値2。
//(2) 前置なのでまず1足して現在値2、そのまま2を出力。

私はこのように考えて頭を整理しています。

では、次のソースはどのように出力されるでしょうか?

public class Sample
{
public static void main(String args[])
{
int a=10;
System.out.println(++a);
System.out.println(a++);
}
}


どちらも11ですね。


応用問題


最後にデクリメント演算子の前置・後置も含めた総合的なプログラムを掲載します。それぞれの演算でa,b,x,yの値がどうなるか考えてからプログラムを実行して答えを確かめてください。

public class Sample
{
public static void main(String args[]){
int a = 0, b = 0;
int x = 10, y = 10;

a = x++;
b = ++y;
System.out.println("インクリメントでa,b,x,yの値はどうなるでしょうか?");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("x = " + x);
System.out.println("y = " + y);

a = x--;
b = --y;
System.out.println("デクリメントでa,b,x,yの値はどうなるでしょうか?");
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("x = " + x);
System.out.println("y = " + y);
}
}


関連記事

タグ :

   印刷ボタン       この記事に拍手する       このエントリーをはてなブックマークに追加

Return to page top

Comments:

Comment Form
Only inform the site author.

Trackback+Pingback:

TrackBack URL for this entry
http://javamania.blog25.fc2.com/tb.php/19-fa8c881b
  • 閉じるボタン
クラスライブラリ解説 目次
クラスライブラリとは
 ├ Java APIの調べ方
 ├ Objectクラスを調べる
 ├ ライブラリのインポート
 ├ 完全修飾クラス名を調べる
 ├ staticインポート
 ├ 外部ライブラリの利用

文字列を扱う
 ├ Stringとイミュータプル
 ├ StringBuilder 文字列の連結
 ├ toString()のオーバーライド
 ├ toXxCase() 大文字と小文字
 ├ compareTo() 値の比較
 ├ parseDouble() 文字を小数値に
 └ 文字列を抜き出す
 ├ char配列からString型へ変換
 ├ 空白文字の除去

日付を扱う
 ├ Calendar 現在の日付
 ├ Date 日付の表示

数値演算を扱う
 ├ round() 切上・切捨・四捨五入
 ├ BigDecimal
 ├ sqrt(),pow() 累乗と平方根
 ├ BigInteger
 ├ int型の最大値・最小値
 ├ random() 乱数作成

ファイルを扱う
 ├ ファイルの存在確認
 ├ ファイルを作成
 ├ ファイルの削除
 ├ ファイルサイズを調べる

入出力ストリーム
 ├ ファイルを読み込む
 ├ 画像ファイルのコピー
 ├ 日本語の読み込みと書き出し
 ├ バッファ入出力
 ├ データ型フリーの出力ストリーム
 ├ getBytes()メソッド

書式つき入出力
 ├ 書式を指定して出力
 ├ 引数インデックス
 ├ 整数値のフォーマット
 ├ 小数値のフォーマット
 ├ 九九の表のフォーマット

例外処理
 ├ printStackTrace()
 ├ NullPointerException
 └ NumberFormatException
月別アーカイブ
カテゴリ
リンク
QRコード
QR
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。