My Java環境
- java11
Javaのデータ型
- プリミティブ型
- 参照型
プリミティブ型(値そのものを使う、null
は代入できない。)
- boolean(初期値は
false
) - char
- byte
- short
- int
- long(
l
をつける。long value = 10l;
) - float(
f
をつける。float value = 10f;
) - double
参照型(インスタンスへの参照を扱う)
- オブジェクト型
- 配列型
- 列挙型
n進数
- 2進数(
0b
はじまり。int value = 0x0101
) - 8進数(
0
はじまり。int value = 077;
) - 10進数(特記なし。
int value = 10;
) - 16進数(
0x
はじまり。int value = 0x1B;
)
アンダースコアを使用した数値表記
- 先頭と末尾での使用NG(
int value = _123;
やint value = 123_;
はNG) - 記号の前後での使用はNG(
int value = 12_.3;
やfloat value = 123_f
やint value = 0x_0100;
はNG)
int value = 123_456;
System.out.println(value);
表示結果は
123456
識別子の命名規則
- 予約語の使用はNG
- 記号はアンダースコア(
_
)と通貨記号はOK、ハイフン(-
)の使用はNG - 数字から始まるのはNG(
int v123;
はOK)
型推論(var
)
型推論はコンパイル時に行われる。
OK
- 以下のようなローカル変数
var value = 123;
var value = method();
var value = new ArrayList<>();
NG
- メンバ変数
- メソッドの引数宣言(
public method(var value){...}
はNG) - 以下のようなローカル変数
var value;
var value = null;
var value = {1, 2, 3};
var value = ラムダ式
- 2つのクラスに互換性がない場合
var classA = new ClassA();
classA = new ClassB();
mutable(可変)とimmutable(不可変)
mutable
- StringBuilderクラス
- など
immutable
- Stringクラス
- LocalDateクラス
- など
型の範囲
byte < short < int < long < float < double
ばいしょいろふだ
型変換
大きい
から小さい
は明示的にキャスト。
int value1 = 123;
short value2 = (int)value1;
同一性と同値性
- 同一性(同じインスタンスを参照) ・・・
==
で判定 - 同値性(同じ値) ・・・
equals
で判定