【Java】変数の初期値一覧 宣言時には何が入っているの?


型毎の初期値



Javaで変数を宣言した時に、初期値は何が入っているのか?

各型毎の初期値についてまとめました。

初期値
boolean false
int 0
String null
Object null
Integer null
Boolean null
char ‘\u0000’
byte 0
short 0
long 0
float 0.0
double 0.0
int[] null
String[] null

プリミティブ型は 0 false

参照型は null

配列はプリミティブ型、参照型かかわらず null

が入っています。


コード書いて実際に確かめてみた



AndroidStudioのテストアプリをサクッと自作して、

アプリが起動した時に、それぞれの変数がログに出力されるようにコードを記載してみました。

ソースコードはこんな感じになります。

public class MainActivity extends AppCompatActivity {

    String TAG = "Initial Value Test";

    /* 宣言しただけの変数 */
    boolean primBoolTest; /* boolean   プリミティブ型 */
    int primIntTest;      /* int       プリミティブ型 */
    String stringTest;    /* String    参照型        */
    TestClass testClass;  /* TestClass 参照型        */
    Integer integerTest;  /* Integer   参照型        */
    Boolean boolTest;     /* Boolean   参照型        */
    char primCharTest;    /* char      プリミティブ型 */
    byte byteTest;        /* byte      プリミティブ型 */
    short shortTest;      /* short     プリミティブ型 */
    long longTest;        /* long      プリミティブ型 */
    float floatTest;      /* float     プリミティブ型 */
    double doubleTest;    /* double    プリミティブ型 */
    int[] arrayTest;      /* int[]     プリミティブ型配列 */
    String[] ArrayTest;   /* String[]  参照型配列        */

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.i(TAG, "boolean  initial value : " + primBoolTest);
        Log.i(TAG, "int      initial value : " + primIntTest);
        Log.i(TAG, "String   initial value : " + stringTest);
        Log.i(TAG, "Object   initial value : " + testClass);
        Log.i(TAG, "Integer  initial value : " + integerTest);
        Log.i(TAG, "Boolean  initial value : " + boolTest);
        Log.i(TAG, "char     initial value : " + primCharTest);
        Log.i(TAG, "byte     initial value : " + byteTest);
        Log.i(TAG, "short    initial value : " + shortTest);
        Log.i(TAG, "long     initial value : " + longTest);
        Log.i(TAG, "float    initial value : " + floatTest);
        Log.i(TAG, "double   initial value : " + doubleTest);
        Log.i(TAG, "int[]    initial value : " + arrayTest);
        Log.i(TAG, "String[] initial value : " + ArrayTest);
    }
}


メンバ変数として、各型の変数を宣言しておき、

画面表示前に呼ばれるonResume()時にログを出力してみました。

以下が実際に出力されたログです。

I/Initial Value Test: boolean  initial value : false
I/Initial Value Test: int      initial value : 0
I/Initial Value Test: String   initial value : null
I/Initial Value Test: Object   initial value : null
I/Initial Value Test: Integer  initial value : null
I/Initial Value Test: Boolean  initial value : null
I/Initial Value Test: char     initial value : ��
I/Initial Value Test: byte     initial value : 0
I/Initial Value Test: short    initial value : 0
I/Initial Value Test: long     initial value : 0
I/Initial Value Test: float    initial value : 0.0
I/Initial Value Test: double   initial value : 0.0
I/Initial Value Test: int[]    initial value : null
I/Initial Value Test: String[] initial value : null

char型だけユニコードが格納されているので、文字化けしているように見えています。


以上Javaにおいての変数の初期値についてでした。

開発の参考になれば幸いです。

ご精読ありがとうございました!!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です