NULL
NULLは、変数の値に何も定義されていない状態を表す特殊な値です。
nullが格納された変数に対しメソッド呼び出しを行うと、NullPointerExceptionというエラーが発生します。
Javaのデータ型には「参照型」と「プリミティブ型」の2つがあります。
String型は参照型のため値を直接持たず、値のある場所を参照するようになっています。参照先が無い状態をnullといいます。
int型やchar型等、値を直接格納する型をプリミティブ型といい、プリミティブ型にはnullがありません。
空文字
空文字は長さ0の「文字列」を意味します。
「 」や「 」は全角スペース、半角スペースであり、空文字ではありません。
Javaでは文字列をダブルクォーテーション(“”)で囲って示すので、空白文字は””と表すことができます。
null・空文字判定
| hoge | Object.isNull | isEmpty | ==null | if(hoge) |
| 0 | FALSE | エラー | エラー | エラー |
| “” | FALSE | TRUE | FALSE | エラー |
| FALSE | FALSE | エラー | エラー | FALSE |
| null | TRUE | エラー | TRUE | エラー |
| “0” | FALSE | FALSE | FALSE | エラー |
| 配列 | FALSE | エラー | FALSE | エラー |
| 宣言無し | エラー | エラー | エラー | エラー |
| 初期値無し | FALSE | エラー | FALSE | エラー |
if()ではboolean型の判定のみ可能なため、boolean型であるFALSE以外ではエラーが出力されます。
NULLかどうか判定(Object.isNull())
Objects.isNull()は引数で渡された値がnullかどうかを判定します。
nullの場合trueを返し、それ以外の場合はfalseを返します。
「com.cmps.nullEmpty」パッケージを作成し、その中に「Null」クラスを作成してください。
Objects.isNull()使用例
String var = null;
//変数varが NULLかどうかを判定します。
if (Objects.isNull(var)) {
System.out.println("nullです。");
} else {
System.out.println("nullではありません。");
}
isNullの引数はObject型であるため、どのような型の変数でもnull判定が行えます。
Objectsクラスを使用する場合は、インポートにimport java.util.Objects;を追加することも忘れずに行いましょう。
文字列が空かどうか判定(isEmpty)
isEmpty()メソッドは文字列が空かどうか判定するメソッドです。
対象の文字列が空文字の場合はtrueを返します。
isEmptyメソッド使用例
String str = "";
// 変数strが空かどうかを判定します。
if(!str.isEmpty()) {
System.out.println("空ではありません。");
} else {
System.out.println("空です。");
}
比較演算子のところでもありましたが「!」をつけることにより判定を反転させることができます
例:str.isEmpty() ※空の場合true !str.isEmpty() ※空でない場合true
練習問題
「com.cmps.nullEmpty」パッケージ内に、「NullQuestion」クラスを作成してください。
問1:NULLでない場合、「OK!」と表示する。
問2: 空でない場合、「値があるぞ!」と表示する。
問3:Listを作成し、そのリストが「空でない」かつ「nullでない」場合、「なにかしらのデータがあるぞ!」と表示する。
問4:配列を作成し、その配列が「空でない」かつ「nullでない」場合、「なにかしらのデータがあるぞ!」と表示する。
練習問題のヒント
問4
固定長配列の場合、「配列が空」については「要素数が0」と考えます。「配列」の単元に載っているものを使って表現できます。
