Java Bronzeのプリミティブ型纏め
プリミティブ型を明示的に初期化しなかった場合の初期値がどうなるか出題されます。
これはクラスのフィールド(メンバ変数)のみ初期化されることを覚えておく必要があります。
ローカル変数は初期化されません。但しプリミティブ型の配列はローカル変数であっても初期化されます。
型 | 初期値 |
---|---|
boolean | false |
short | 0 |
int | 0 |
float | 0.0 |
double | 0.0 |
long | 0 |
char | \u0000 |
byte | 0 |
オブジェクト | null |
charとか忘れがちなので覚えておいた方が良いです。charは半角空白です。
以下フィールド変数初期化例です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Main { | |
static int i; | |
static boolean flag; | |
static short s; | |
static float f; | |
static double d; | |
static long l; | |
static char c; | |
static byte b; | |
public static void main(String[] args) { | |
System.out.println(i); // 0 | |
System.out.println(flag); // false | |
System.out.println(s); // 0 | |
System.out.println(f); // 0.0 | |
System.out.println(d); // 0.0 | |
System.out.println(l); // 0 | |
System.out.println(":" + c + ":"); // : : | |
System.out.println(b);// 0 | |
} | |
} |
プリミティブ型の記憶範囲
多分この手の問題も1問くらい出題されるので覚えておいた方が良いです。
特にbyte,short,int,longくらいが出題される傾向にあるように思います。
型 | 範囲 |
---|---|
boolean | trueまたはfalse |
short | -32768~32767 |
int | -2147483648~2147483647 |
float | 4バイト単精度浮動小数点数 |
double | 8バイト倍精度浮動小数点数 |
long | -9223372036854775808~9223372036854775807 |
char | \u0000~\uffff(0~65535) |
byte | -128~127 |
char型にint型を代入する場合は明示的にキャストする
これは結局は、箱のサイズが違う型なだけであって、そのサイズ内であればchar型でもint型でも同じになります。
ちなみにint型の方がサイズは32bitと大きいので、char型 → int型に変換するにはキャストする必要があります。大きい型から小さい型への変換をナローイング変換と言います。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Main { | |
static char i = 65535; // これはOK | |
// static char j = 65536; // これはコンパイルエラーなのでコメントする | |
static int k = 100000; // int型 | |
public static void main(String[] args) { | |
int x = i; // char型からint型に暗黙変換できる | |
System.out.println(x); // 65535となる | |
System.out.println(k); // 100000となる | |
char xx = (char)k; // int型からchar型に変換する場合は明示的にキャストする | |
System.out.println(xx); // 蚠となる | |
} | |
} |
浮動小数点数のデフォルトはdouble型
浮動小数点の型はdoubleとfloatがありますが、デフォルトはdouble型になるので、floatの時に接頭辞(末尾)にf、またはFを省くとコンパイルエラーとなるので注意です。
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public class Main { | |
static float f; | |
static double d; | |
public static void main(String[] args) { | |
f = 3.0f; // fかFが必須、省くとコンパイルエラー | |
d = 4.0; // dかDは必須ではない | |
} | |
} |
KHI入社して退社。今はCONFRAGEで正社員です。関西で140-170/80~120万から受け付けております^^
得意技はJS(ES6),Java,AWSの大体のリソースです
コメントはやさしくお願いいたします^^
座右の銘は、「狭き門より入れ」「願わくは、我に七難八苦を与えたまえ」です^^
コメント