参照型
- クラス型
- インターフェース型
- 配列型
クラス型
- オブジェクトはメモリ上に存在するデータ
- 文字列の場合
- 文字列データ
- 文字列の長さを決める部分を切りだす、検索する機能
- 文字列の場合
-
全部の文字列を普遍的に操作できるように用意されているがクラス
- フィールド:データの入れ物
- メソッド:データ操作
- クラスは設計図📃
- オブジェクト指向ではクラスからデータを持ったオブジェクトを作成し、オブジェクト経由で操作を行う
- オブジェクトは作成したもの⚙
インスタンス化
- クラスからものを作成する作業のこと
- インスタンス化によってできるものをオブジェクト,インスタンスという
- クラスの複製を作成、専用のメモリ領域を確保する
- Javaではnewでクラスをインスタンス化する。引数の()は省略できない
- 生成されたオブジェクトは変数に格納され、オブジェクトへの参照(メモリへのアドレス)が格納
//“Cat”クラスからtamaオブジェクトを作成
Cat tama = new Cat();
クラスフィールド/クラスメソッド(静的フィールド/静的メソッド)
- オブジェクトを生成せずクラスから直接呼び出せる
- 例えば、
Syetem.out.println
はSystem.out
フィールドから得たPrintStream
オブジェクトを介してprintlnメソッド(インスタンスメソッド)を呼び出す
null型
- 変数がオブジェクトへの参照を持たない状態を表す
- 参照型のフィールドの場合、明示的に初期化しないとnullになる
- nullの変数のフィールドにアクセスするとNullPointException
配列型
- 配列:言語仕様に組み鋳込まれた仕組み
- []カッコも含めて型名である
- 配列の場合はnewして実態を持たせるには初期化時に大きさ(使うメモリ)を定義する必要
-
int[] hoge = new int[1000];
//4byte×1000=4000byte~4KB
- コレクション:標準ライブラリ(Javaでは優先的に使う)
// サイズのみ宣言
int [] list = new int[5];
// 初期化して宣言
int [] list = { 1, 2, 3, 4, 5 };
//var でサイズのみ宣言
var list = new int [5];
// var で初期化して宣言 ※データ型略不可
var list = new int[] { 1, 2, 3, 4, 5 };
配列へのアクセス
System.out.println(list[0]); //1
System.out.println(list.length); //5
//要素の書き換え ※追加は不可能、変更にはArrayListクラスを使う
list[1] = 15;
多次元配列
// 3*4*5の三次元配列
init [][][] list = new int [3][4][5];
// 2次元配列を初期化して宣言
int [][] list = [
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
};
//var で初期化して宣言
var list = new int[][] [
{ 1, 2, 3 },
{ 4, 5, 6 },
{ 7, 8, 9 },
};
// 0行1列目にアクセス
System.out.println(list[0][1]); //2
ジャグ配列の扱い
- 長さが異なる多次元配列
- 最初の宣言では外側のサイズのみ指定
- 1次元目は確保しないといけないが2次元目は確保不要
- 2次元以降はダイナミックに変更できる!
- ユースケース
- 全人口の給料の配列を作るときに都道府県ごとに作成
int [][] = salary = new int[47][];
- 全人口の給料の配列を作るときに都道府県ごとに作成
var list = new int [3][];
list[0] = new int[2]; //0番目の配列の要素は2個
list[1] = new int[3]; //0番目の配列の要素は3個
list[2] = new int[4]; //0番目の配列の要素は4個
var list = new int [][] {
{ 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8, 9 },
};
System.out.println(list[1][2]); //5 ※サイズは3