技術のメモ箱

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はプリミティブ型(基本データ型)で、小文字で始まる。

説明
byte8bit符号付き整数
short16bit符号付き整数
int32bit符号付き整数
long64bit符号付き整数
char16bit符号無しUnicode
float32bit符号付き浮動小数点数
double64bit符号付き浮動小数点数
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"
pagetop