Javaの文法まとめ

今日はJavaの文法についてのまとめを紹介したいと思います。

この記事では、初心者から上級者まで幅広く対象となるように、Javaの基本的な文法を詳しく解説していきます。

Javaを学びたい方はぜひ参考にしてください。

1. Javaとは?


Javaは、1995年にサン・マイクロシステムズ(現在はOracleに買収されています)が開発したプログラミング言語です。

Javaは、オブジェクト指向プログラミングをベースとした言語であり、プログラムの再利用性が高く、安全性が強化されています。

また、Javaはクロスプラットフォーム対応のため、WindowsやMac、Linuxなど、様々な環境で使用することができます。

2. Javaの基本構文


Javaの基本構文は、以下のようになります。

public class Main {
  public static void main(String[] args) {
    // ここにプログラムを記述します
  }
}

このように、Javaでは、クラスとメソッドの構造を持っています。

クラスとは、オブジェクトの設計図のようなものであり、メソッドはクラス内に定義された処理の塊のことです。

3. 変数とデータ型

Javaでは、データを扱うために変数を使用します。変数は、以下のように定義することができます。

// 文字列型の変数を宣言する
String name = "John";

// 整数型の変数を宣言する
int age = 25;

// 小数点型の変数を宣言する
double height = 180.5;

Javaでは、以下のようなデータ型が用意されています。

・文字列型(String)
・整数型(int)
・小数点型(double)
・真偽値型(boolean)
・文字型(char)
・制御文

Javaでは、制御文を使用して、プログラムのフローを制御することができます。代表的な制御文として、以下のものがあります。

・if文
・for文
・while文
・switch文

例えば、以下のようなif文を使用して、条件に応じて処理を分岐することができます。

int num = 10;
if (num > 5) {
  System.out.println("numは5より大きいです");
} else {
  System.out.println("numは5以下です");
}

また、for文を使用して、繰り返し処理を行うことができます。

for (int i = 0; i < 5; i++) {
  System.out.println("iの値は" + i + "です");
}

4. クラスとオブジェクト指向プログラミング


Javaは、オブジェクト指向プログラミング(OOP)の言語として知られています。

OOPとは、現実世界の物事をプログラムで表現する手法のことで、クラスとオブジェクトを基本的な構成要素として使用します。

クラスは、オブジェクトの設計図のようなものであり、オブジェクトはクラスから生成された実体のことです。

以下は、Personというクラスを定義し、インスタンス化(オブジェクトを生成)する例です。

public class Person {
  // フィールド
  String name;
  int age;
 
  // コンストラクタ
  public Person(String name, int age) {
    this.name = name;
    this.age = age;
  }
 
  // メソッド
  public void sayHello() {
    System.out.println("こんにちは、私の名前は" + this.name + "です。" + "年齢は" + this.age + "です。");
  }
}

// Personクラスのインスタンス化
Person person = new Person("John", 25);

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

5. 継承とポリモーフィズム


OOPでは、継承やポリモーフィズムなどの機能を使用することで、クラスの再利用性を高めることができます。

継承は、既存のクラスを継承して新しいクラスを作成することで、共通の機能を再利用することができます。

public class Animal {
  // フィールド
  String name;
  int age;
 
  // コンストラクタ
  public Animal(String name, int age) {
    this.name = name;
    this.age = age;
  }
 
  // メソッド
  public void sayHello() {
    System.out.println("こんにちは、私の名前は" + this.name + "です。" + "年齢は" + this.age + "です。");
  }
}

// Animalクラスを継承したDogクラスの定義
public class Dog extends Animal {
  // コンストラクタ
  public Dog(String name, int age) {
    super(name, age);
  }
 
  // メソッド
  public void bark() {
    System.out.println("わんわん");
  }
}

// Dogクラスのインスタンス化
Dog dog = new Dog("ポチ", 3);

Animalクラスのメソッドを呼び出し、Dogクラス独自のメソッドも呼び出すことができます。

dog.sayHello();
dog.bark();

ポリモーフィズムは、継承やインターフェースを使用することで、同じメソッド名を持つ複数のクラスが存在している場合でも、それぞれのクラスに応じた振る舞いをすることができます。

public interface Shape {
  public double getArea();
}

public class Circle implements Shape {
  // フィールド
  double radius;
 
  // コンストラクタ
  public Circle(double radius) {
    this.radius = radius;
  }
 
  // Shapeインターフェースの実装
  public double getArea() {
    return radius * radius * Math.PI;
  }
}

public class Square implements Shape {
  // フィールド
  double length;
 
  // コンストラクタ
  public Square(double length) {
    this.length = length;
  }
 
  // Shapeインターフェースの実装
  public double getArea() {
    return length * length;
  }
}

6. 例外処理

Javaでは、プログラム実行中に発生する予期しないエラーを扱うために、例外処理機能が提供されています。

例外は、実行時に発生する可能性のあるエラーを事前に予測して、対処方法を定義しておくことができます。

例外処理は、try-catch文を使用して行います。以下は、例外処理の例です。

public class ExceptionHandling {
  public static void main(String[] args) {
    try {
      int result = 10 / 0;
    } catch (ArithmeticException e) {
      System.out.println("0で割ることはできません。");
    }
  }
}

tryブロック内で発生する可能性のある例外をcatchブロックで捕捉し、処理方法を定義することができます。上記の例では、0で割ることはできないため、ArithmeticExceptionが発生し、それをcatchブロックで捕捉しています。

catchブロック内で、エラーメッセージを出力することで、プログラムが停止することなくエラーに対処できます。

また、finallyブロックを使用することで、例外が発生しても必ず実行される処理を定義することができます。以下は、finallyブロックの例です。

public class ExceptionHandling {
  public static void main(String[] args) {
    try {
      int result = 10 / 0;
    } catch (ArithmeticException e) {
      System.out.println("0で割ることはできません。");
    } finally {
      System.out.println("プログラムを終了します。");
    }
  }
}

finallyブロック内で、プログラムを終了する旨のメッセージを出力しています。例外が発生した場合でも、必ずこのメッセージが出力されるため、プログラムの安全性が向上します。

7. コレクション

Javaには、複数のオブジェクトを格納するためのコレクション機能が提供されています。

コレクションは、配列と比較して柔軟なデータ構造を持ち、データの追加・削除・検索などの操作を行うことができます。


Javaのコレクションには、List、Set、Mapなどがあります。

それぞれの特徴や使用方法について説明します。


Listは、順序を持った要素を格納することができるコレクションです。

要素の追加・削除・検索を行うことができます。ArrayList、LinkedListなどがあります。

// ArrayListの例
List<String> list = new ArrayList<>();
list.add("apple");
list.add("banana");
list.add("orange");
System.out.println(list.get(0)); // apple
System.out.println(list.size()); // 3

Setは、重複した要素を格納することができないコレクションです。要素の追加・削除・検索を行うことができます。HashSet、TreeSetなどがあります。

// HashSetの例
Set<String> set = new HashSet<>();
set.add("apple");
set.add("banana");
set.add("orange");
System.out.println(set.contains("apple")); // true
System.out.println(set.size()); // 3

Mapは、キーと値をペアで格納することができるコレクションです。キーを指定することで、値を取得することができます。要素の追加・削除・検索を行うことができます。HashMap、TreeMapなどがあります。

// HashMapの例
Map<String, String> map = new HashMap<>();
map.put("apple", "りんご");
map.put("banana", "バナナ");
map.put("orange", "オレンジ");
System.out.println(map.get("apple")); // りんご
System.out.println(map.size()); // 3

8. スレッド


Javaには、複数の処理を同時に実行するためのスレッド機能が提供されています。

スレッドを使用することで、プログラムの処理速度を向上させることができます。

以下は、スレッドを使用した例です。

public class MyThread extends Thread {
  public void run() {
    for (int i = 0; i < 10; i++) {
      System.out.println("スレッド実行中:" + i);
      try {
        Thread.sleep(1000); // 1秒待機
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}

public class ThreadExample {
  public static void main(String[] args) {
    MyThread thread = new MyThread();
    thread.start();
    for (int i = 0; i < 10; i++) {
      System.out.println("メインスレッド実行中:" + i);
      try {
        Thread.sleep(500); // 0.5秒待機
      } catch (InterruptedException e) {
        e.printStackTrace();
      }
    }
  }
}


MyThreadクラスを定義して、runメソッド内でスレッドを実行しています。

ThreadExampleクラスで、MyThreadクラスをインスタンス化してstartメソッドを呼び出すことで、スレッドを実行しています。


また、メインスレッドでも同時に処理を実行するため、両方のスレッドが交互に実行されるように、一定時間待機する処理を挿入しています。

スレッドを使用することで、複数の処理を同時に実行することができ、プログラムの処理速度を向上させることができます。

9. まとめ

以上、Javaの文法について初心者から上級者まで対象となる内容をまとめてきました。

Javaは、プログラミング言語として広く使用されており、WebアプリケーションやAndroidアプリなどの開発にも利用されています。


Javaの文法を習得することで、プログラミングの基礎を学ぶことができます。

また、オブジェクト指向プログラミングの考え方を理解することで、より高度なプログラムの開発が可能になります。


今後もJavaを学び、プログラミングのスキルを高めていきましょう。

そして、Javaを使ったWebアプリケーションや、Androidアプリの開発など、さまざまな分野で活躍していきましょう。