Java ドキュメント
簡潔で実例中心の Java リファレンス。概念を読み、コードを見て、Coddy のジャーニーで実践しましょう。
Java のガイド付き学習を始めるはじめに
- JavaとはJavaが実際には何なのか、JVMがどのようにして1つのコンパイル済みプログラムをどこでも動かせるようにするのか、そしてJavaでどんなソフトウェアが作られているのかを解説します。
- Java のインストールJava Development Kit(JDK)のインストール方法、バージョンとベンダーの選び方、そして java と javac がコマンドラインで動作することの確認方法。
- Javaの実行あらゆるJavaプログラムの背後にある「コンパイルしてから実行する」2段階のサイクル。javacで.javaソースをバイトコードに変換し、javaで.classファイルを実行します。
- Java の構文Java プログラムの形——`main` メソッド、文とセミコロン、ブロックと波かっこ、そしてコードが実行される前にコンパイラが強制するルール。
- コメントJavaでのコメントの書き方を解説します。単一行の // コメント、複数行の /* */ ブロック、Javadocの /** */ ドキュメントコメント、そしてそれぞれの使いどころと避けるべき点を紹介します。
変数と型
- 変数Javaで変数がどう動くか — 型を付けた宣言、値の代入、命名ルール、varキーワード、finalによる定数、そして変数がどこに存在するかを決めるスコープのルール。
- データ型Javaのデータ型をわかりやすく解説:8つのプリミティブ型、参照型、デフォルト値、リテラルと接尾辞、オーバーフロー、そしてどの数値型をいつ使うか。
- 文字列Javaの文字列の仕組み:生成、+での連結、なぜイミュータブル(変更不可)なのか、equalsでの比較、そしてlength・substring・replaceといった日常的なStringメソッド。
- 文字列フォーマットJava で String.format と printf を使って文字列を整形する方法 - 数値・パディング・小数の書式指定子、そしてテキストブロックと formatted メソッド。
- 演算子Javaの演算子の仕組み(算術・比較・論理・代入・インクリメント・三項演算子)に加えて、整数除算・優先順位・初心者がはまりやすい落とし穴を解説します。
- 型キャストJavaが型の間でどう変換するか:自動的な拡大変換、明示的な縮小キャスト、縮小時に失われるデータ、そして数値と文字列の間の変換について。
制御フロー
- if-elseif、else if、else を使って Java で判断を行う方法: boolean 条件、分岐の連鎖、ネスト、三項演算子、そして多くの人がつまずきがちな典型的なミスを解説します。
- switchJava の switch 文を解説:case ラベル、break とフォールスルー、default 分岐、case のグループ化、モダンなアロー形式、そして switch 式。
- for ループJava の for ループを解説:古典的な3部構成のループ、配列やリストの反復処理、ネストしたループ、break と continue、そして拡張 for-each。
- while ループJava の while ループを解説。条件を先に評価する while、最低 1 回は実行される do-while、番兵値までの入力読み取り、break と continue、そして無限ループの回避方法。
- for-each ループJava の for-each(拡張 for)ループを解説:配列やコレクションをすっきり反復する方法、いつ使うべきか、そして誰もがはまる変更の落とし穴。
配列とコレクション
- 配列Javaで配列がどう動くか - 固定長、宣言と初期化、インデックス、length、ループ、多次元配列、そしてArraysユーティリティクラスについて。
- ArrayList通常の配列の代わりに使うサイズ可変リスト、JavaのArrayListの使い方 - 追加、取得、削除、サイズ、ループ、ソートまでを解説します。
- HashMapキーと値の検索に Java の HashMap を使う方法: put、get、getOrDefault、containsKey、エントリの反復処理、そして最もよく使うパターン。
- HashSet重複しない値のコレクションを扱う Java の HashSet の使い方 - add、contains、remove、リストの重複除去、そして和・積・差による集合の組み合わせ。
- コレクションの反復処理Javaのコレクションをループする方法 - for-eachループ、Iterator、インデックスループ、forEachメソッド - と、反復中に要素を安全に削除する方法。
メソッド
- メソッドJavaのメソッドとは何か、宣言と呼び出しの方法、戻り値とvoidの違い、静的なmainメソッド、そしてメソッドがコードを整理しやすく再利用しやすく保つ仕組みを解説します。
- メソッドパラメータJavaのメソッドパラメータの仕組み — 引数の渡し方、パラメータと引数の違い、Javaの値渡しのルール、そして値を返す方法。
- メソッドオーバーロードJava のメソッドオーバーロードによって複数のメソッドが同じ名前を共有しつつ異なる引数を取れる仕組み、コンパイラがどのオーバーロードを選ぶか、そして避けるべきあいまいさの落とし穴を解説します。
- 可変長引数Java の可変長引数(...)でメソッドが任意の数の引数を受け取れる仕組み、それが配列になる理由、可変長引数は最後に1つだけというルール、そして空呼び出しとあいまいさの落とし穴。
クラスとオブジェクト
- クラスJavaのクラスとは何か、フィールドとメソッドの定義方法、newによるオブジェクトの生成、thisの役割、そしてインスタンスの状態がオブジェクトに保持される理由を解説します。
- コンストラクタJavaのコンストラクタの仕組み:デフォルトコンストラクタ、引数付きコンストラクタ、this、コンストラクタのオーバーロード、そしてthis()とsuper()による連鎖。
- 継承Javaのサブクラスが extends でフィールドとメソッドを継承し、super で親を呼び出し、振る舞いをオーバーライドする方法と、よくある落とし穴を解説します。
- インターフェースJava のインターフェースとは何か、その定義と実装の方法、default メソッドと static メソッド、そしてインターフェースが抽象クラスとどう異なるかを解説します。
- 抽象クラスJavaの抽象クラスとは何か、抽象メソッドの宣言方法、なぜインスタンス化できないのか、そしてインターフェースではなく抽象クラスを選ぶべき場面を解説します。
- ポリモーフィズムJavaのポリモーフィズムによって1つの変数が多くの型を参照できる仕組み、オーバーライドされたメソッドが実行時にディスパッチされる理由、そしてアップキャスト・ダウンキャスト・instanceofを安全に使う方法を解説します。
- アクセス修飾子Javaの4つのアクセスレベル - public、private、protected、package-private - が、ほかのコードに何を見せ、何に触れさせるかをどう制御するか。
- 静的メンバーJava で static キーワードが何をするのか、static フィールドやメソッドがオブジェクトではなくクラスに属するしくみ、そして static ブロックや定数をいつ使うべきかを解説します。
- 列挙型Java の enum とは何か、宣言の仕方、フィールドやメソッドの追加、switch での分岐、そして int や String 定数の寄せ集めより enum が優れている理由を解説します。
ジェネリクスと関数型
- ジェネリクスJava のジェネリクスとは何か、ジェネリックなクラスとメソッドの書き方、境界型パラメータ、ワイルドカード、そして型消去がなぜ重要なのか。
- ラムダ式Javaのラムダ式とは何か、アロー構文、関数型インターフェースをどう実装するか、メソッド参照、そして変数のキャプチャについて。
- StreamJava の Stream API でコレクションを処理する方法 - filter、map、sorted、collect、count、reduce - 手書きのループの代わりに読みやすいパイプラインを組み立てる。
- Optionaljava.util.Optional とは何か、どう作るか、そして null チェックの代わりに map・filter・orElse・ifPresent を使って値を安全に読み取る方法。