ブロック内でのみ利用する変数

ブロック内で宣言された変数は、ブロック内でしか利用できません。

if (a>b) {
  int tmp = b;
  b = a;
  a = tmp;
}
System.out.println("tmp="+tmp);  //エラー 変数tmpはブロック内のしか使えない

実行してみると

$ javac Test.java
$ java Test
シンボルを見つけられません。
シンボル: 変数 b
場所    : Test の クラス
    System.out.println(b);
                       ^

と怒られます。