イディオムとは

簡単にいうと、プログラミングに関するTIPSのことです。さらに大きなイディオムの集まり、というか設計方法のことはデザインパターンと呼びます。
下記サンプルコードでfor文のイディオムを示します。

コード1 - for文のループの中でstr.length()呼び出し

class Sample {
	public static void main(String[] args) {
		Sample.printChar("hello, world");
	}

	// 文字列を1文字毎に改行して出力
	static void printChar(String str) {
		for (int i = 0; i < str.length(); i++) {
			char c = str.charAt(i);
			System.out.println(c);
		}
	}
}

この書き方は初心者が先輩に指摘される代名詞とも言えるミスです。for文がまわる数だけ、str.length()が呼ばれるため、「コストが高い = 性能が劣化する」危険性をはらんでいます。
実際は10000回まわしても誤差なんでしょうけどね。余談ですが、Core2Duo世代のプログラマはこのコストの差について、どうやれば身をもって体験できるんでしょうか?

コード2 - for文の手前で変数へ格納

class Sample {
	public static void main(String[] args) {
		Sample.printChar("hello, world");
	}

	// 文字列を1文字毎に改行して出力
	static void printChar(String str) {
		int len = str.length();
		for (int i = 0; i < len; i++) {
			char c = str.charAt(i);
			System.out.println(c);
		}
	}
}

コード1を修正するとこうなります。事前に変数lenに格納してあげることで、str.length()は1度きりの呼び出しで済みます。
ふつうなら、これでOK!となりますよね。

コード3 - for文の「初期化の式」の中で変数へ格納

class Sample {
	public static void main(String[] args) {
		Sample.printChar("hello, world");
	}

	// 文字列を1文字毎に改行して出力
	static void printChar(String str) {
		for (int i = 0, len = str.length(); i < len; i++) {
			char c = str.charAt(i);
			System.out.println(c);
		}
	}
}

あまり見慣れない書き方かもしれません。この書き方にはコード2と同様に、何度もstr.length()が呼ばれないことに加え、もう1つメリットがあります。
それは変数lenのスコープが汚れないことです。変数lenはfor文の中でのみ有効な変数となります。
今回のサンプルコードは 「スコープを汚さずにfor文の条件式の最大値の変数を書く方法」というイディオムになりますね。