ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
宣言と代入
int count = 10; // 型を明示する
String name = "田中";
double price = 1980.5;
boolean isActive = true;
int a, b; // まとめて宣言できる
a = 1;
b = 2;
int x = 1, y = 2; // 宣言と同時に代入
// count = "十"; // コンパイルエラー: 型が違う
ローカル変数は初期化が必須
public void run() {
int n;
// System.out.println(n);
// エラー: variable n might not have been initialized
n = 1;
System.out.println(n); // OK
int m;
if (cond) {
m = 1;
}
// System.out.println(m); // エラー: 通らない経路がある
int k;
if (cond) { k = 1; } else { k = 2; }
System.out.println(k); // OK: すべての経路で代入されている
}
「代入されていない可能性がある」だけでコンパイルが通りません。実行時に未初期化の値を読む事故が起きないようになっています。
フィールドには既定値が入る
public class Sample {
int count; // 0
double rate; // 0.0
boolean flag; // false
char c; // ' '
String name; // null ← 参照型は null
int[] items; // null
public void show() {
System.out.println(count); // 0
System.out.println(name.length()); // NullPointerException
}
}
| 型 | 既定値 | 型 | 既定値 |
|---|---|---|---|
byte short int long | 0 | float double | 0.0 |
char | ' ' | boolean | false |
参照型(String 配列 クラス) | null | ||
フィールドが null のまま使われるのが NullPointerException の最大の原因です。コンストラクタで必ず値を入れるか、final を付けて代入を強制してください。
プリミティブ型と参照型
// プリミティブ: 値そのものを持つ
int a = 1;
int b = a;
b = 2;
System.out.println(a); // 1 影響しない
// 参照型: オブジェクトの場所を持つ
int[] x = {1, 2, 3};
int[] y = x;
y[0] = 99;
System.out.println(x[0]); // 99 同じ配列を指している
// コピーしたいなら複製する
int[] z = x.clone();
z[0] = 0;
System.out.println(x[0]); // 99 影響しない
// メソッドの引数も同じ
void f(int n) { n = 99; } // 呼び出し元は変わらない
void g(int[] arr) { arr[0] = 99; } // 中身が変わる
void h(int[] arr) { arr = new int[]{0}; } // 呼び出し元は変わらない
Java の引数はすべて値渡しです。参照型では「参照の値」がコピーされるため、中身は変えられますが、引数自体に別のオブジェクトを代入しても呼び出し元には反映されません。
var による型推論
var count = 10; // int と推論される
var name = "田中"; // String
var list = new ArrayList<String>(); // ArrayList<String>
var map = new HashMap<String, List<Integer>>(); // 長い型名を書かずに済む
for (var entry : map.entrySet()) { }
// count = "十"; // エラー: int のまま
// var n; // エラー: 初期値が必要
// var x = null; // エラー: 型を決められない
// var f = () -> {}; // エラー: ラムダは推論できない
Java 10 以降で使えます。型が消えるわけではなく、右辺から決まった型に固定されます。ローカル変数だけで、フィールドや引数には使えません。
右辺を見ても型が分からない場合(var result = service.process();)は、読み手が困るので明示的に書いたほうが親切です。
final
final int MAX = 100;
// MAX = 200; // エラー: 再代入できない
final List<String> items = new ArrayList<>();
items.add("a"); // OK: 中身は変えられる
// items = new ArrayList<>(); // エラー: 参照先は変えられない
// 中身も変えたくないなら不変のコレクションにする
final List<String> fixed = List.of("a", "b");
// fixed.add("c"); // UnsupportedOperationException
// ラムダや匿名クラスから使う変数は final 相当でなければならない
int n = 1;
Runnable r = () -> System.out.println(n);
// n = 2; // エラー: n が実質 final でなくなる
final は「この名前が別のものを指さない」ことだけを保証します。不変にしたいなら List.of() や record を使ってください。
スコープ
public class Sample {
private int field = 1; // インスタンス全体で使える
private static int shared = 0; // クラス全体で 1 つ
public void run() {
int local = 2; // このメソッドの中だけ
if (true) {
int inner = 3; // このブロックの中だけ
System.out.println(local);
}
// System.out.println(inner); // エラー
for (int i = 0; i < 3; i++) { }
// System.out.println(i); // エラー: for の外では使えない
}
}
同じ名前で隠れる(シャドーイング)
public class User {
private String name;
private int count = 1;
public User(String name) {
// name = name; // 引数に引数を代入しているだけ。フィールドは null のまま
this.name = name; // this. でフィールドを指す
}
public void run() {
int count = 99; // フィールドと同じ名前のローカル変数
System.out.println(count); // 99 ローカルが優先
System.out.println(this.count); // 1 フィールドは this. で見る
}
}
コンストラクタでの this. の付け忘れはコンパイルエラーにならず、フィールドが null のまま残ります。IDE の警告を有効にしておいてください。
命名規則
| 対象 | 書き方 | 例 |
|---|---|---|
| 変数・メソッド | camelCase | userName getTotal() |
| クラス・インターフェース | PascalCase | UserProfile |
定数(static final) | UPPER_SNAKE | MAX_RETRY |
| パッケージ | すべて小文字 | com.example.app |
| 型パラメータ | 大文字 1 文字 | T K V E |
// 使える文字: 英数字 _ $(先頭は数字以外)
int _count = 1; // 使えるが避ける
// int 2nd = 1; // エラー
// int class = 1; // エラー: 予約語
// 数値リテラルはアンダースコアで区切れる
int million = 1_000_000;
long hex = 0xFF_FF;
関連
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- 【django】ログイン 認証機能 2026-09-08 03:22:09
- MySQL ERROR 1063 Incorrect column specifier for column|原因と直し方 2026-09-08 03:11:09
- 【PHPエラー】Object of class stdClass could not be converted to string 2026-09-07 07:46:04
- Julia Genie ローカル開発サーバ起動完全ガイド 2026-09-07 07:46:04
- NetBeansでTomcatを起動する手順|サーバ登録・ポート・トラブル対処 2026-09-07 07:45:13
- Laravel 記事一覧55件|環境構築・ルーティング・DB・エラー対処 2026-09-07 07:45:13
- Spring Framework 記事一覧31件|DI・設定・例外の対処 2026-09-07 07:45:13
- Javaの定数 2026-09-07 07:45:13
- JPEG(.jpg/.jpeg)画像形式の完全ガイド — 仕様・マジックナンバー・他形式との比較・EXIF 2026-09-07 07:45:13
- hostnameコマンドの使い方|Windows・Linux・macOSでホスト名確認 2026-09-07 07:45:13
- Laravelルートグループ|prefix・middleware・nameで一括管理 2026-09-07 07:45:13
- Oracle DROP USERでユーザー削除|CASCADE・接続中ユーザーの対処 2026-09-07 07:45:13
- SQLとは|DDL・DMLとリレーショナルデータベース操作の基本 2026-09-07 07:45:13
- Linuxで複数ファイルの文字列を一括置換|find・sed・xargsの安全手順 2026-09-07 07:45:13
- Linux whichコマンドの使い方|絶対パス取得とtype・command -vの違い 2026-09-07 07:45:13
コメントを削除してもよろしいでしょうか?