Java/変数と型
宣言する場所や宣言の仕方によって、クラス変数(静的変数)、インスタンス変数(フィールド)、ローカル変数と呼ばれる。
クラス変数、インスタンス変数、配列変数は初期値が設定されるが、ローカル変数は設定されないため初期化しないとコンパイルエラーになる。
Java 10から、varを用いた型推論によるローカル変数の宣言が可能になった。
jshell> var t = "test"
t ==> "test"
jshell> int n = 5
n ==> 5
int num1, num2;
int num3 = 0, num4 = 5;
int num5, num6 = 2; // num5に値は設定されない
int num7 = num8 = num9 = 1; // 多重代入という
public static final int TYPE_INT_RGB = 1;
intやbooleanはプリミティブ型(基本データ型)で、小文字で始まる。
型 | 説明 |
---|---|
byte | 8bit符号付き整数 |
short | 16bit符号付き整数 |
int | 32bit符号付き整数 |
long | 64bit符号付き整数 |
char | 16bit符号無しUnicode |
float | 32bit符号付き浮動小数点数 |
double | 64bit符号付き浮動小数点数 |
boolean | 真偽値 |
プリミティブ型以外の配列やクラスの型は参照型という。
配列についてはデータ構造を参照。
一連の定数を定義する型。
enum FloatState {
START, INT, FRAC_START, FRAC, ZERO
}
精度が大きい型へ変換する場合は、キャストが不要である。
精度が小さい型へ変換する場合は、値の前に型を括弧で囲んだものを付ける。
jshell> int i = 234
i ==> 234
jshell> double d = i
d ==> 234.0
jshell> int j = (int) d
j ==> 234
数値型のラッパークラスを使う。カンマ区切りの数値などに対応するにはNumberFormatクラスを使う。
jshell> int a = Integer.parseInt("3")
a ==> 3
jshell> java.text.NumberFormat.getInstance().parse("12,345")
$2 ==> 12345
文字列結合が最も手軽。Java 8までは実行速度が遅いStringBuilderに変換されていたが、Java 9からは改善された。
jshell> String s = 123 + ""
s ==> "123"
jshell> s = String.valueOf(123)
s ==> "123"
jshell> s = "%,d".formatted(12345)
s ==> "12,345"
jshell> java.text.NumberFormat.getInstance().format(12345)
$3 ==> "12,345"