Java概要

  • コンパイル型・オブジェクト指向言語
  • Webアプリ、業務システム、Androidアプリなど幅広く利用
  • JVM(Java仮想マシン)上で動作

注意点

  • 本資料ではJava 17以降の標準Javaを対象とします
  • Javaは型が厳格で、変数宣言時に型指定が必須
  • すべてのコードはクラスの中に記述する必要がある

Hello World

public class Hello {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}
  • mainメソッドがプログラムのエントリポイント
  • System.out.printlnで標準出力に文字列を表示
  • Javaファイルの拡張子は .java
  • コンパイルと実行は以下のコマンド
    javac Hello.java
    java Hello
    

  • Javaでは変数や値に必ず型がある
  • 主な基本型(プリミティブ型)
    • int: 整数値
    • double: 倍精度浮動小数点数
    • boolean: 論理値(true/false)
    • char: 文字(1文字)
  • 文字列は String クラスで表現
int a = 1;
double b = 1.0;
boolean c = true;
char d = 'A';
String s = "hello";
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(s);

変数

  • 変数は値を格納するための「箱」
  • 宣言時に型を指定し、同じ変数に異なる型の値は代入できない
  • 変数名は小文字で始めるのが一般的
int x = 10;
double y = 3.14;
String name = "Java";

演算子

  • 四則演算: +, -, *, /
  • 剰余演算: %(整数型のみ)
  • 代入演算: =, +=, -=, *=, /=
  • 比較演算: ==, !=, <, <=, >, >=
  • インクリメント/デクリメント: ++, --
  • 文字列連結: +String型同士)
  • 論理演算: &&, ||, !
int a = 5, b = 2;
System.out.println(a + b);
System.out.println(a - b);
System.out.println(a * b);
System.out.println(a / b);
System.out.println(a % b);
String s = "abc" + "def";
System.out.println(s);

型変換

  • 異なる型同士の演算では自動的に型変換(暗黙の型変換)が行われる
  • 明示的な型変換(キャスト)も可能
int a = 5;
double b = 2.0;
System.out.println(a / b); // aがdoubleに変換される

int c = (int)3.14; // cは3になる

制御文

  • 条件分岐: if文, switch文
  • 繰り返し: for文, while文, do-while文

if文

int a = 3;
if (a > 0) {
    System.out.println("aは正です");
} else if (a == 0) {
    System.out.println("aはゼロです");
} else {
    System.out.println("aは負です");
}

while文

int i = 5;
while (i > 0) {
    System.out.println(i);
    i--;
}

for文

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

配列

  • 複数の同じ型の値をまとめて扱う
  • 要素数は固定
int[] scores = {45, 100, 21, 89, 94};
int total = 0;
for (int i = 0; i < scores.length; i++) {
    total += scores[i];
}
System.out.println("平均: " + (total / scores.length));

メソッド(関数)

  • よく使う処理をまとめて定義できる
  • 戻り値の型、引数の型を必ず指定
  • メソッドはクラスの中に定義する
public class Quadratic {
    public static void solve(int a, int b, int c) {
        int d = b * b - 4 * a * c;
        if (d > 0) {
            double x0 = (-b + Math.sqrt(d)) / (2.0 * a);
            double x1 = (-b - Math.sqrt(d)) / (2.0 * a);
            System.out.println("x0 = " + x0 + ", x1 = " + x1);
        } else if (d == 0) {
            double x = -b / (2.0 * a);
            System.out.println("x = " + x);
        } else {
            System.out.println("実数解なし");
        }
    }
    public static void main(String[] args) {
        solve(1, -3, 2);
        solve(1, -2, 1);
        solve(1, -1, 1);
    }
}
  • Javaではメソッドの引数・戻り値の型を必ず指定する
  • 標準ライブラリのメソッドを使う場合はクラス名(例: Math.sqrt)を指定
  • 実数リテラルは2.0のように書く

クラスとオブジェクト(基礎)

  • Javaはすべてクラスベース
  • クラスはデータ(フィールド)と処理(メソッド)をまとめたもの
public class Person {
    String name;
    int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    public void greet() {
        System.out.println("Hello, my name is " + name + ". I am " + age + " years old.");
    }
    public static void main(String[] args) {
        Person p = new Person("Alice", 20);
        p.greet();
    }
}

まとめ

  • Javaは型が厳格で、すべてのコードはクラスの中に記述する
  • 制御文や配列、メソッド、クラスなど基本的な構文を理解することが重要
  • オブジェクト指向の考え方が中心となる