ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
変数の基本
// 宣言 + 初期化
int x = 10;
String name = "taro";
double price = 1980.0;
// 宣言と初期化を分離
int y;
y = 20;
// 同じ型を複数同時に
int a = 1, b = 2, c = 3;
// 定数 (final)
final int MAX_COUNT = 100;
// MAX_COUNT = 200; // ❌ コンパイルエラー
プリミティブ型 8 種
| 型 | サイズ | 範囲 | デフォルト値 |
|---|---|---|---|
boolean | 1 bit (実装依存) | true / false | false |
byte | 8 bit | -128 〜 127 | 0 |
short | 16 bit | -32768 〜 32767 | 0 |
char | 16 bit | 0 〜 65535 (UTF-16) | ' ' |
int | 32 bit | -2^31 〜 2^31-1(約 ±21億) | 0 |
long | 64 bit | -2^63 〜 2^63-1 | 0L |
float | 32 bit | IEEE 754 単精度 | 0.0f |
double | 64 bit | IEEE 754 倍精度 | 0.0d |
参照型とプリミティブの違い
// プリミティブ: 値そのものを変数が持つ
int a = 10;
int b = a; // 値コピー
b = 20;
System.out.println(a); // 10(a は影響なし)
// 参照型: ヒープのオブジェクトへの参照
int[] arr1 = {1, 2, 3};
int[] arr2 = arr1; // 参照コピー(同じ配列を指す)
arr2[0] = 99;
System.out.println(arr1[0]); // 99(同じ配列だから変わる)
// String は不変なので参照型でも値型のように振る舞う
String s1 = "hello";
String s2 = s1;
s2 = "world";
System.out.println(s1); // hello
変数の種類とスコープ
public class User {
// クラス変数 (static): クラスに 1 つ。デフォルト値あり
static int totalUsers = 0;
// インスタンス変数: インスタンスごと。デフォルト値あり
private String name;
private int age;
// 静的定数
public static final String DEFAULT_ROLE = "guest";
public void process() {
// ローカル変数: ブロック内のみ有効。デフォルト値なし
int count = 0;
for (int i = 0; i < 10; i++) {
// for のループ変数 i はループブロック内のみ
count += i;
}
// System.out.println(i); // ❌ コンパイルエラー: i はここでは見えない
if (count > 30) {
String message = "high"; // if ブロック内のみ
}
// System.out.println(message); // ❌ エラー
}
}
var による型推論 (Java 10+, JEP 286)
// Java 10+ LVTI (Local Variable Type Inference)
var name = "taro"; // String
var count = 10; // int
var list = new ArrayList<String>(); // ArrayList<String>
var map = Map.of("a", 1, "b", 2); // Map<String, Integer>
// for ループでも使える
for (var entry : map.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// ❌ できないこと
// var x; // 初期化必須
// var y = null; // 型推論不可
// var z = () -> 1; // ラムダの型推論不可
// public var field = 10; // フィールドでは不可
// var add(var x) {...} // メソッドの引数 / 戻り値では不可
final 変数
// 1. ローカル変数の final
final int MAX = 100;
// MAX = 200; // ❌ 再代入不可
// 2. インスタンス定数(コンストラクタで 1 度だけ代入可)
public class Order {
private final String id;
public Order(String id) {
this.id = id; // OK
}
}
// 3. static final = 真の定数(クラス定数)
public class Constants {
public static final int MAX_RETRY = 3;
public static final String SERVICE_NAME = "OrderService";
}
// 4. 参照型の final: 参照は変えられないが中身は変えられる
final int[] arr = {1, 2, 3};
arr[0] = 99; // OK
// arr = new int[5]; // ❌ 参照の付け替え不可
final List<String> list = new ArrayList<>();
list.add("hello"); // OK(List 自体は不変ではない)
命名規則
| 対象 | 命名 | 例 |
|---|---|---|
| クラス | UpperCamelCase | OrderService |
| 変数 / メソッド | lowerCamelCase | userName / getUserAge() |
| 定数 (static final) | SCREAMING_SNAKE_CASE | MAX_RETRY_COUNT |
| パッケージ | lowercase | com.example.order |
| 型パラメータ | 1 文字大文字 | T, E, K, V |
Auto Boxing / Wrapper クラス
// プリミティブ ↔ Wrapper の自動変換
int i = 10;
Integer boxed = i; // Auto Boxing: int → Integer
int unboxed = boxed; // Auto Unboxing: Integer → int
// Generics は参照型のみ → Wrapper 必須
List<Integer> nums = new ArrayList<>();
nums.add(10); // Auto Boxing
// 落とし穴: Integer の比較は equals
Integer a = 200;
Integer b = 200;
System.out.println(a == b); // false(参照比較)
System.out.println(a.equals(b)); // true
Integer c = 100;
Integer d = 100;
System.out.println(c == d); // true(-128〜127 は IntegerCache)
他言語との違い
| 項目 | Java | PHP | JavaScript |
|---|---|---|---|
| 変数宣言 | 型必須 or var | $ 接頭辞、型自由 | let / const / var |
| 型チェック | 静的(コンパイル時) | 動的 | 動的 (TypeScript で静的) |
| 定数 | final / static final | const / define() | const |
| スコープ | ブロック | 関数(PHP 7+ で if/for もブロック類似) | let/const はブロック、var は関数 |
| 初期化必須 | ローカル変数のみ | 不要 | 不要 |
FAQ
Q: var はいつ使うべき?
A: 初期化式で型が自明な場合(var list = new ArrayList<String>();)に推奨。可読性が下がる長い式や数値リテラルは型を明示するのが無難。
Q: ローカル変数のデフォルト値はなぜ無い?
A: 「未初期化のまま使うバグ」を防ぐため、コンパイルエラーで検出する設計です。インスタンス変数はオブジェクト生成時に初期化保証されます。
Q: int と Integer、どちらを使うべき?
A: 高速 / null 不要なら int、null 表現や Collection 格納が必要なら Integer。DB null マッピングは Integer がよい。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子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
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 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
- 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
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・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
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?