はじめに
booleanとBooleanの違いを分からずコードを書いて期待する結果を出力するのに時間がかかってしまったので備忘録を兼ねて記事にします。
問題
さっそくですが問題です。
①と②で出力結果を考えてみて下さい
①Boolean[] Boolean_results = {true, false};
if(Arrays.asList(Boolean_results).contains(false)) {
System.out.println("false - Found!");
} else {
System.out.println("false - Not Found!");
}
②boolean[] boolean_results = {true, false};
if(Arrays.asList(boolean_results).contains(false)) {
System.out.println("false - Found!");
} else {
System.out.println("false - Not Found!");
}
答え
① false - Found!
② false - Not Found!
解説
Arrays.asList()メソッドは、引数として渡された配列をListオブジェクトに変換します。
しかし、Arrays.asList()メソッドは、プリミティブ型の配列を直接受け取ることができずオブジェクト配列でなければなりません。
つまり、Arrays.asList()を使用する場合、boolean[]ではなく、Boolean[]を使用する必要があります。
【プリミティブ型とは】
※プリミティブ型とは、Javaのデータ型の一つでJavaのいわゆる基本な型のことで、値型とも言う。boolean以外に、int, char, floatなどが存在します。
まとめ
配列をListに変換する際にArrays.asList()を使用する場合、プリミティブ型の配列を使用する場合は、適切なラッパークラスの配列に変換する必要がある。