【Java】文法ルール・メソッドなど(基本メモ)
Javaの文法ルール
Javaのプログラムはクラス単位で組み立てる → オブジェクト指向の考え方
中括弧(波括弧)を使い、クラス名を書いてブロックを記述する
class クラス名{
ここをブロックという
}
- クラス名の書き方→単語の先頭は大文字にする(
SampleClass) - 通常、1つのファイルに1つのクラス→ SampleClass.java(クラス名.java)
クラスの宣言
例:Taskクラス(Todoアプリなど)
// Javaの基本構造
public class Task {
}
public
→ 他のファイル(Main.java など)から自由にアクセスできるclass Task
→Taskという「設計図(クラス)」を定義
→ Javaでは「クラス名=ファイル名」が基本ルール
Task.java に Task クラスを書くのが◎
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 とはインスタンス自身を指す
this.title = title; の意味
- 左:フィールドの
title(クラスが持つ変数) - 右:引数の
title(メソッドにもらった値)
両方同じ名前なので this をつけて区別している
Getter(値を取り出すメソッド)
Javaでは値を外に公開する場合、直接変数にアクセスさせない
getterメソッドで読むのが基本ルール
public String getTitle() {
return title;
}
public boolean isDone() {
return done;
}
Rails の場合はattr_accessorが自動生成してくれる
→Javaは基本、手で書く
Setter(値を書き換えるメソッド)
状態変更をする
public void setDone(boolean done) {
this.done = done;
}
task.setDone(true);
Railsならtask.done = trueで済む
→Javaは「メソッド経由」が基本
toString() のオーバーライド(表示用)
@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){
メインメソッドの中身
}
文(ステートメント)の終わりには「;」を書く
List<Task> 複数の Task を List で保持する
「Task をたくさん管理するために、内部に ArrayList を持っている」
private List<Task> tasks = new ArrayList<>();
List<Task>とは- Task 型のオブジェクトを複数扱うための「リスト」
<>の中は ジェネリクス(型の箱)
new ArrayList<>()とはListの具体的なデータ構造としてArrayListを採用
addTask() タスクを追加
public void addTask(Task task) {
tasks.add(task);
}
- メソッドの役割→
Taskをリストに追加する - 引数
Task task→呼び出す側がTaskのインスタンスを渡してくる tasks.add(task)→Listに要素を追加するメソッド
showTasks() タスクを一覧表示
public void showTasks() {
for (int i = 0; i < tasks.size(); i++) {
System.out.println(i + ": " + tasks.get(i));
}
}
for 文
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()が自動で呼ばれる
removeTask() 指定番号のタスクを削除
public void removeTask(int index) {
tasks.remove(index);
}
remove(index)→指定された位置のタスクを消す。int index→呼び出し側が「消したい番号」を渡す
メソッドについてまとめ
| メソッド | 意味 |
|---|---|
| List<Task> | タスクを複数扱うリスト |
| addTask | タスクを追加 |
| showTasks | タスクを一覧表示 |
| removeTask | 指定番号のタスクを削除 |
| private | 外部から直接触らせない |
| public | 外部から呼べる |
import 文
Java の import とは、他のパッケージにあるクラス(部品)を使うための宣言
import java.util.ArrayList;
import java.util.List;
- List → インターフェース(抽象的な「リスト」)
- ArrayList → List の実装クラス(中身が配列でできてるリスト)
List を使うときは、実際の中身として ArrayList を new して使うのが定番