Step By Step

30代会社員。人生を一歩ずつ、歩いています。

【スポンサーリンク】

Java言語における「null」「空文字」「スペース」の違いってなんだろう

Javaでプログラムを書いていて、きちんと区別できていないように感じたのでまとめてみます。なお、PC上にJava環境がなくてもWebブラウザ上で簡単に動作を確認するだけなら以下が便利です。登録やインストール不要で、24の言語でプログラムの動作を確認できます。


上記サイトに丸々コピペで動作します。

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
        /**  null */
	private static final String STR_NULL = null;
	/** 空文字 */
	private static final String STR_NO = "";
	/**  半角スペース */
	private static final String STR_SPACE = " ";
    
public static void main(String[] args) throws Exception {
        
        // 比較
	print();

	System.out.println("\n");
	System.out.println("isEmpty()");
	System.out.println("空文字:" + STR_NO.isEmpty());
	System.out.println("半角スペース:" + STR_SPACE.isEmpty());
	// nullに対してisEmpty()メソッドを呼ぶと例外発生 
	//System.out.println("半角スペース:" + STR_NULL.isEmpty());
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = br.readLine();
    }

	public static void print() {
        // 空文字とnullは等しいか?
	System.out.println(STR_NO.equals(STR_NULL));
        // 空文字とスペースは等しいか?
	System.out.println(STR_NO.equals(STR_SPACE));
        // スペースとnullは等しいか?
	System.out.println(STR_SPACE.equals(STR_NULL));
	}
}


↓コンソール出力結果↓

false
false
false


isEmpty()
空文字:true
半角スペース:false

JavaではNULL、空文字、スペースは区別されます。

JavaSEの標準では提供されていませんが、Commonsサブプロジェクトの拡張機能"StringUtils#isBlank()メソッド"を使うと半角スペースもtrueになります。
Commonについては以下が詳しいです(公式)


ではでは。



Java言語の体系的な知識を習得するには、Java Programmer資格を受験してみるのも良いと思います。受験料と参考書、結構高いのが悩ましいところです。

SE7のJava Programmer資格を取得した時の体験記です。
tempo96.hateblo.jp

【スポンサーリンク】