ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
Java for 文の 3 形式
1. 基本の for
// (初期化; 条件; 更新) の 3 要素
for (int i = 0; i < 10; i++) {
System.out.println(i);
}
// → 0 1 2 ... 9
// 降順
for (int i = 9; i >= 0; i--) {
System.out.println(i);
}
// 2 ずつ
for (int i = 0; i < 10; i += 2) {
System.out.println(i); // 0, 2, 4, 6, 8
}
// 複数初期化・複数更新
for (int i = 0, j = 9; i < j; i++, j--) {
System.out.println(i + " " + j);
}
// → 0 9 / 1 8 / 2 7 / 3 6 / 4 5
2. 拡張 for (for-each, Java 5+)
// 配列
int[] nums = {1, 2, 3, 4, 5};
for (int n : nums) {
System.out.println(n);
}
// List
List<String> names = List.of("Taro", "Hanako", "Jiro");
for (String name : names) {
System.out.println(name);
}
// Map
Map<String, Integer> map = Map.of("a", 1, "b", 2);
for (Map.Entry<String, Integer> e : map.entrySet()) {
System.out.println(e.getKey() + ": " + e.getValue());
}
// Set
Set<Integer> set = Set.of(1, 2, 3);
for (Integer n : set) {
System.out.println(n);
}
3. 無限 for
// 無限ループ
for (;;) {
String line = reader.readLine();
if (line == null) break;
process(line);
}
// 同じ意味
while (true) {
// ...
}
break / continue / return
for (int i = 0; i < 10; i++) {
if (i == 3) continue; // i=3 をスキップ
if (i == 7) break; // i=7 でループ終了
System.out.println(i);
}
// → 0 1 2 4 5 6
// メソッドから return
public Integer findFirst(List<Integer> list, int target) {
for (int n : list) {
if (n == target) return n;
}
return null;
}
ラベル付き break / continue
ネストした for から外側のループを一気に抜けるのに便利:
outer:
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (i * j > 20) {
break outer; // ★ 外側のループも抜ける
}
System.out.println(i + "," + j);
}
}
// ラベル付き continue
search:
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
if (matrix[i][j] == 0) continue search; // 外側 for の次反復へ
// 0 以外の処理
}
}
Stream API (Java 8+)
// 数値範囲
IntStream.range(0, 10).forEach(System.out::println); // 0..9
IntStream.rangeClosed(1, 10).sum(); // 1+2+...+10 = 55
// コレクション
List<String> names = List.of("Taro", "Hanako", "Jiro");
names.stream()
.filter(n -> n.startsWith("T"))
.map(String::toUpperCase)
.forEach(System.out::println);
// Map に対する forEach
Map<String, Integer> map = Map.of("a", 1, "b", 2);
map.forEach((k, v) -> System.out.println(k + "=" + v));
// 並列処理(注意: 順序保証なし)
list.parallelStream().forEach(n -> heavyProcess(n));
配列の走査パターン
int[] arr = {10, 20, 30, 40, 50};
// インデックスが必要
for (int i = 0; i < arr.length; i++) {
System.out.println(i + ": " + arr[i]);
}
// インデックス不要
for (int n : arr) {
System.out.println(n);
}
// 後ろから
for (int i = arr.length - 1; i >= 0; i--) {
System.out.println(arr[i]);
}
// 2 次元配列
int[][] matrix = {{1,2,3}, {4,5,6}, {7,8,9}};
for (int i = 0; i < matrix.length; i++) {
for (int j = 0; j < matrix[i].length; j++) {
System.out.println(matrix[i][j]);
}
}
// 2 次元 + 拡張 for
for (int[] row : matrix) {
for (int n : row) {
System.out.println(n);
}
}
よくあるバグ
Off-by-one エラー
int[] arr = new int[10];
// ❌ ArrayIndexOutOfBoundsException
for (int i = 0; i <= arr.length; i++) { ... }
// ^^ <= でなく < が正解
// ❌ 1 つ手前で終わる
for (int i = 0; i < arr.length - 1; i++) { ... }
// ^^ -1 が不要かも
// ✅ 標準
for (int i = 0; i < arr.length; i++) { ... }
浮動小数で for を回す
// ❌ 累積誤差で永遠に終わらない / 件数がずれる
for (double d = 0.0; d != 1.0; d += 0.1) {
System.out.println(d);
}
// ✅ 整数で回して必要時に浮動小数化
for (int i = 0; i <= 10; i++) {
double d = i * 0.1;
System.out.println(d);
}
拡張 for 中の要素削除
List<String> list = new ArrayList<>(List.of("a", "b", "c"));
// ❌ ConcurrentModificationException
for (String s : list) {
if (s.equals("b")) list.remove(s);
}
// ✅ Iterator で削除
Iterator<String> it = list.iterator();
while (it.hasNext()) {
if (it.next().equals("b")) it.remove();
}
// ✅ removeIf (Java 8+)
list.removeIf(s -> s.equals("b"));
パフォーマンス
| 方法 | 速度 | 備考 |
|---|---|---|
| 配列の通常 for | ★ 最速 | JIT 最適化が効きやすい |
| 配列の拡張 for | 同等 | 内部的に同じ |
| List の通常 for + get(i) | ArrayList: 速い / LinkedList: 遅い | LinkedList の get(i) は O(n) |
| List の拡張 for | ★ ArrayList・LinkedList ともに高速 | Iterator 使用 |
| Stream forEach | やや遅い | 関数呼出オーバーヘッド |
| parallelStream | 大量データで有利 | 小データではむしろ遅い |
FAQ
Q: while と for どちらを使うべき?
A: 回数が決まっているなら for、条件依存なら while。可読性で選んでください。
Q: 拡張 for でインデックスが欲しい
A: 通常の for を使うか、別変数で増分。または IntStream.range(0, list.size()).forEach(i -> ...)。
Q: ループ中にリストを変更したい
A: 拡張 for では不可(ConcurrentModificationException)。Iterator.remove() か removeIf。追加なら別リストに集めて後でまとめて追加。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
同階層のページ
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?