Java基礎 チートシート

エンジニアのための実践リファレンス

Javaとは?

Javaは「Write Once, Run Anywhere」を実現するオブジェクト指向プログラミング言語です。JVM上で動作し、型安全性が高く、エンタープライズシステムから組み込み機器まで幅広く利用されています。

オブジェクト指向 静的型付け プラットフォーム非依存

基本構文

全てのコードはクラス内に記述します

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

public class クラス定義

main メソッドがエントリーポイント

System.out.println() 標準出力

データ型

整数

int, long, short, byte

小数

double, float

文字

char

真偽値

boolean
int age = 25;
double price = 99.99;
String name = "太郎";
boolean isActive = true;

String は参照型(クラス)

演算子

// 算術演算子
int result = 10 + 5;  // 加算
int diff = 10 - 5;    // 減算
int product = 10 * 5; // 乗算
int quotient = 10 / 5; // 除算
int remainder = 10 % 3; // 剰余

// インクリメント/デクリメント
int count = 0;
count++;  // count = 1
count--;  // count = 0

== 等価、!= 不等価

&& AND、|| OR、! NOT

配列

// 配列の宣言と初期化
int[] numbers = {1, 2, 3, 4, 5};
String[] names = new String[3];

// 要素へのアクセス
int first = numbers[0];  // 1
names[0] = "太郎";

// 配列の長さ
int length = numbers.length; // 5

配列のインデックスは0から始まります

制御構造

条件分岐 (if)

if (age >= 20) {
    System.out.println("成人");
} else if (age >= 13) {
    System.out.println("10代");
} else {
    System.out.println("子供");
}

多分岐 (switch)

switch (day) {
    case 1:
        System.out.println("月曜");
        break;
    case 2:
        System.out.println("火曜");
        break;
    default:
        System.out.println("その他");
}
break を忘れずに

三項演算子

// 条件 ? 真の値 : 偽の値
String status =
    age >= 20 ? "成人" : "未成年";

int max =
    a > b ? a : b;

ループ処理

for

for (int i = 0; i < 5; i++) {
    System.out.println(i);
}

拡張for

for (String name : names) {
    System.out.println(name);
}

while

int i = 0;
while (i < 5) {
    System.out.println(i);
    i++;
}

do-while

int i = 0;
do {
    System.out.println(i);
    i++;
} while (i < 5);

break(ループ脱出)

for (int i = 0; i < 10; i++) {
    if (i == 5) break;  // i=5で終了
    System.out.println(i);
}

continue(次の反復へ)

for (int i = 0; i < 5; i++) {
    if (i == 2) continue;  // i=2をスキップ
    System.out.println(i);
}

メソッド定義

基本的なメソッド

// 戻り値なし
public void sayHello() {
    System.out.println("こんにちは");
}

// 戻り値あり
public int add(int a, int b) {
    return a + b;
}

// 呼び出し
sayHello();
int result = add(5, 3);  // 8

メソッドのオーバーロード

// 同名で引数が異なるメソッド
public int add(int a, int b) {
    return a + b;
}

public double add(double a, double b) {
    return a + b;
}

public int add(int a, int b, int c) {
    return a + b + c;
}

クラスとオブジェクト

クラス定義

public class Person {
    // フィールド(属性)
    private String name;
    private int age;

    // コンストラクタ
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }

    // メソッド
    public void introduce() {
        System.out.println("私は" + name +
                         "、" + age + "歳です");
    }
}

オブジェクト生成と使用

// オブジェクト生成
Person person = new Person("太郎", 25);

// メソッド呼び出し
person.introduce();

// getter/setter(通常は定義する)
public String getName() {
    return name;
}

public void setName(String name) {
    this.name = name;
}

継承とインターフェース

継承(extends)

// 親クラス
public class Animal {
    public void eat() {
        System.out.println("食べます");
    }
}

// 子クラス
public class Dog extends Animal {
    public void bark() {
        System.out.println("ワン");
    }
}

// 使用
Dog dog = new Dog();
dog.eat();   // 継承したメソッド
dog.bark();  // 独自のメソッド

インターフェース(implements)

// インターフェース定義
public interface Flyable {
    void fly();  // 抽象メソッド
}

// 実装クラス
public class Bird implements Flyable {
    @Override
    public void fly() {
        System.out.println("飛びます");
    }
}

// 使用
Bird bird = new Bird();
bird.fly();

例外処理

try-catch-finally

try {
    // 例外が発生する可能性のあるコード
    int result = 10 / 0;
} catch (ArithmeticException e) {
    // 例外処理
    System.out.println("ゼロ除算エラー");
} catch (Exception e) {
    // 汎用的な例外処理
    System.out.println("エラー: " + e.getMessage());
} finally {
    // 必ず実行される処理
    System.out.println("処理終了");
}

例外のスロー

// 例外をスローするメソッド
public void validateAge(int age)
        throws IllegalArgumentException {
    if (age < 0) {
        throw new IllegalArgumentException(
            "年齢は0以上である必要があります"
        );
    }
}

// 使用
try {
    validateAge(-5);
} catch (IllegalArgumentException e) {
    System.out.println(e.getMessage());
}

実務で役立つTips

命名規則

クラス名:PascalCase
メソッド/変数:camelCase
定数:UPPER_SNAKE_CASE

カプセル化

フィールドはprivateにし、getter/setterでアクセス制御を行う

equals メソッド

文字列比較は == ではなく .equals() を使用する

null チェック

NullPointerExceptionを避けるため、null チェックを行う

よく使うパターン

文字列操作

String str = "Hello, World!";

// 文字列の長さ
int len = str.length();  // 13

// 大文字/小文字変換
String upper = str.toUpperCase();
String lower = str.toLowerCase();

// 部分文字列
String sub = str.substring(0, 5);  // "Hello"

// 分割
String[] parts = str.split(", ");

// 結合
String joined = String.join("-", parts);

リスト操作(ArrayList)

import java.util.ArrayList;

ArrayList<String> list = new ArrayList<>();

// 追加
list.add("りんご");
list.add("バナナ");

// 取得
String fruit = list.get(0);  // "りんご"

// 削除
list.remove(0);

// サイズ
int size = list.size();

// ループ
for (String item : list) {
    System.out.println(item);
}

Map操作(HashMap)

import java.util.HashMap;

HashMap<String, Integer> map = new HashMap<>();

// 追加
map.put("太郎", 25);
map.put("花子", 30);

// 取得
int age = map.get("太郎");  // 25

// 存在確認
boolean exists = map.containsKey("太郎");

// ループ
for (String key : map.keySet()) {
    System.out.println(key + ": " + map.get(key));
}

ファイル読み込み

import java.nio.file.*;
import java.io.IOException;

try {
    // ファイル全体を読み込み
    String content = Files.readString(
        Paths.get("file.txt")
    );

    // 行ごとに読み込み
    List<String> lines = Files.readAllLines(
        Paths.get("file.txt")
    );
} catch (IOException e) {
    e.printStackTrace();
}