リテラル
ソースコードに直接記述する値。プリミティブ型では整数、浮動小数点数、真偽、文字の四つ。参照型では文字列やnull
、クラスリテラルがある。
プリミティブ型リテラル
プリミティブ型のリテラルはデフォルトでは以下の型になる。
リテラル | プリミティブ型 |
---|---|
整数 | int |
少数 | double |
真偽 | boolean |
文字 | char |
整数リテラルがlong
型であることを指定する時は、接尾にl
またはL
をつける。例 432L
。
少数リテラルがfloat
型であることを指定する時は、接尾にf
またはF
をつける。例 3.43f
。
整数リテラルはデフォルトでは10進数であるが、接頭辞をつけることで以下の3つの基数を指定できる。例 0b11001
,0761
,0x3A9F2
。
基数 | 接頭辞 |
---|---|
2 | 0b |
8 | 0 |
16 | 0x |
クラスリテラルとClass<T>
クラス
型名.class
はClass<型名>
というクラスのインスタンスへの参照となる。これはリテラルであり、class
というフィールドは無いので注意(class
は予約語なので識別子に使えないことからも分かる)。
Class<T>
クラスについて詳しくはドキュメントを参照のこと。特徴的なのはpublic
コンストラクタが存在せず、T
型のロード時にJVMによって自動でインスタンス化されることである。
このクラスはObject.getClass()
の戻り値として一番よく見るのではないかと思われる。
実行例
package test; public class Literals { public static void main(String[] args) { System.out.println(A.class); // class test.A System.out.println(B.class); // class test.B System.out.println(IF.class); // interface test.IF System.out.println(Imple.class); // class test.Imple System.out.println(new A().getClass() == A.class); // true // 型判定について、instanceof との比較 B objB = new B(); System.out.println(objB instanceof B); // true System.out.println(objB instanceof A); // true System.out.println(objB.getClass() == B.class); // true // System.out.println(objB.getClass() == A.class); // エラー A objBA = objB; // アップキャストする System.out.println(objBA instanceof B); // true System.out.println(objBA instanceof A); // true System.out.println(objBA.getClass() == B.class); // true System.out.println(objBA.getClass() == A.class); // false Imple objI = new Imple(); System.out.println(objI instanceof Imple); // true System.out.println(objI instanceof IF); // true System.out.println(objI.getClass() == Imple.class); // true // System.out.println(objI.getClass() == IF.class); // エラー IF objIF = objI; // アップキャストする System.out.println(objIF instanceof Imple); // true System.out.println(objIF instanceof IF); // true System.out.println(objIF.getClass() == Imple.class); // true System.out.println(objIF.getClass() == IF.class); // false } } class A { } class B extends A { } interface IF {} class Imple implements IF {}