目次 閉じる
Javaの文法ルール
Javaのプログラムはクラス単位で組み立てる → オブジェクト指向の考え方
中括弧(波括弧)を使い、クラス名を書いてブロックを記述する
class クラス名{
ここをブロックという
}- クラス名の書き方→単語の先頭は大文字にする(
SampleClass) - 通常、1つのファイルに1つのクラス→ SampleClass.java(クラス名.java)
例:Taskクラス(Todoアプリなど)
// Javaの基本構造
public class Task {
}public
→ 他のファイル(Main.java など)から自由にアクセスできるclass Task
→Taskという「設計図(クラス)」を定義
→ Javaでは「クラス名=ファイル名」が基本ルール
Javaは クラスベースのオブジェクト指向
例:Todo アプリなら「タスク1つ」をオブジェクトとして扱うイメージ
private String title;
private boolean done;private
→ 「クラスの外からは直接いじれない」というアクセス制御
→ オブジェクト指向の大事な原則:カプセル化(情報隠蔽)String title
→ タスク名(文字列)boolean done
→ 完了状態(true/false)
Railsと違い、Javaは型が必須(静的型付け言語)
public Task(String title) {
this.title = title;
this.done = false;
}コンストラクタの役割は以下のとおり
- 例:
new Task("買い物")のときに呼ばれる - 初期状態をセットする場所
this.title = title; の意味
- 左:フィールドの
title(クラスが持つ変数) - 右:引数の
title(メソッドにもらった値)
両方同じ名前なので this をつけて区別している
Javaでは値を外に公開する場合、直接変数にアクセスさせない
getterメソッドで読むのが基本ルール
public String getTitle() {
return title;
}
public boolean isDone() {
return done;
}Rails の場合はattr_accessorが自動生成してくれる
→Javaは基本、手で書く
状態変更をする
public void setDone(boolean done) {
this.done = done;
}
task.setDone(true);Railsならtask.done = trueで済む
→Javaは「メソッド経由」が基本
@Override
public String toString() {
return (done ? "[x] " : "[ ] ") + title;
}@Override
「親クラス(Object)のメソッドを上書きする」という宣言toString()
オブジェクトを文字列にした時の表示ルール
(条件 ? trueの時 : falseの時)
doneが true →"[x]"doneが false →"[ ]"
// 例
System.out.println(task);
=> [x] 買い物Java 文法ポイント
| 機能 | Javaの文法的ポイント | 意味 |
|---|---|---|
| クラス定義 | public class | 設計図 |
| フィールド | private 型 変数名 | カプセル化 |
| コンストラクタ | public クラス名() | 初期化 |
| Getter/Setter | getXxx/setXxx | 変数を安全に操作 |
| toString | @Override | 表示のカスタム |
メソッドは処理の集まりのこと
- クラスのブロックの内側に書く
- 1つのクラスの中に複数のメソッドを書ける
JVMは、指定されたクラスからメインメソッドを探して実行する
public static void main(String[] args){
メインメソッドの中身
}文(ステートメント)の終わりには「;」を書く
「Task をたくさん管理するために、内部に ArrayList を持っている」
private List<Task> tasks = new ArrayList<>();List<Task>とは- Task 型のオブジェクトを複数扱うための「リスト」
<>の中は ジェネリクス(型の箱)
new ArrayList<>()とはListの具体的なデータ構造としてArrayListを採用
public void addTask(Task task) {
tasks.add(task);
}- メソッドの役割→
Taskをリストに追加する - 引数
Task task→呼び出す側がTaskのインスタンスを渡してくる tasks.add(task)→Listに要素を追加するメソッド
public void showTasks() {
for (int i = 0; i < tasks.size(); i++) {
System.out.println(i + ": " + tasks.get(i));
}
}for 文
- for (int i = 0; i < tasks.size(); i++)
- i = 0:最初のインデックス
- i < tasks.size():リストの大きさ分ループ
- i++:1ずつ増える
tasks.size()→Listの要素数を取得tasks.get(i)→i番目のTaskを取得System.out.println→toString()が自動で呼ばれる
public void removeTask(int index) {
tasks.remove(index);
}remove(index)→指定された位置のタスクを消す。int index→呼び出し側が「消したい番号」を渡す
| メソッド | 意味 |
|---|---|
| List<Task> | タスクを複数扱うリスト |
| addTask | タスクを追加 |
| showTasks | タスクを一覧表示 |
| removeTask | 指定番号のタスクを削除 |
| private | 外部から直接触らせない |
| public | 外部から呼べる |
Java の import とは、他のパッケージにあるクラス(部品)を使うための宣言
import java.util.ArrayList;
import java.util.List;- List → インターフェース(抽象的な「リスト」)
- ArrayList → List の実装クラス(中身が配列でできてるリスト)
List を使うときは、実際の中身として ArrayList を new して使うのが定番
