カテゴリ: JavaSilver試験対策 更新日: 2026/07/10

Javaのnullとリテラルの違いを完全解説!初心者でも理解できる基礎知識

032
Javaのnullとリテラルの違い

先生と生徒の会話形式で理解しよう

生徒

「Javaで変数にnullを代入する場合と、空文字""を代入する場合の違いって何ですか?」

先生

「良い質問です!nullは、変数が何も参照していないことを示します。一方、空文字は文字列オブジェクトを参照していますが、その中身が空であるということです。具体例で確認してみましょう。」

1. nullとは?

1. nullとは?
1. nullとは?

Javaでは、nullは参照型変数が何も参照していない状態を表します。例えば、次のように記述します:


Object obj = null;
System.out.println(obj);

このコードを実行すると、objには何も参照されていないため、System.out.printlnは「null」と表示します。この挙動は、Javaのprintlnメソッドの仕様によるものです。

2. 空文字との違い

2. 空文字との違い
2. 空文字との違い

空文字は、文字列オブジェクトを参照しているが、その中身が空である状態を示します。次の例を見てください:


String str = "";
System.out.println(str);

このコードを実行すると、空文字列オブジェクトが参照され、その中身(何もない文字列)が表示されます。そのため、コンソールには何も出力されませんが、エラーは発生しません。

3. NULLは使えない理由

3. NULLは使えない理由
3. NULLは使えない理由

Javaでは、リテラルとしてNULLは使用できません。nullは小文字で固定されており、大文字のNULLはコンパイルエラーとなります。次のコードはエラーになります:


Object obj = NULL; // コンパイルエラー

この点を理解していないと、コードが意図せず動作しなくなる可能性があります。

Javaをこれから始める人や、 オブジェクト指向の考え方を基礎から理解したい人には、 定番の入門書がこちらです。

スッキリわかるJava入門 第4版をAmazonで見る

※ Amazon広告リンク

4. 試験対策:nullと空文字の使い分け

4. 試験対策:nullと空文字の使い分け
4. 試験対策:nullと空文字の使い分け

Javaでnullを使用する際の注意点と、空文字との違いを整理しましょう:

  • nullは、参照型変数が何も参照していないことを示す。
  • 空文字は、文字列オブジェクトを参照し、その中身が空であることを示す。
  • NULL(大文字)は使用できず、コンパイルエラーになる。

次のコードで違いをさらに確認しましょう:


public class Test {
    public static void main(String[] args) {
        String str1 = null;
        String str2 = "";

        if (str1 == null) {
            System.out.println("str1 is null");
        }
        if (str2.isEmpty()) {
            System.out.println("str2 is an empty string");
        }
    }
}

実行結果:


str1 is null
str2 is an empty string

このように、nullと空文字を使い分けることで、適切なプログラム設計が可能になります。

5. メモリイメージで考えるnullと空文字

5. メモリイメージで考えるnullと空文字
5. メモリイメージで考えるnullと空文字

プログラムが実行されるとき、メモリの中では「変数」という名札が「オブジェクト」という実体を指し示しています。nullと空文字の違いをメモリの状態でイメージすると、より理解が深まります。

プログラミング未経験の方でも、以下の例え話でイメージを掴んでみましょう。

  • null:「住所が書かれていないメモ用紙」です。家(オブジェクト)そのものが存在しません。
  • 空文字(""):「住所は書かれているが、行ってみたら空き家だった」状態です。家(オブジェクト)は存在しますが、中に家具(文字)が一つもありません。

この違いがあるため、nullの状態の変数に対して「中身を教えて」と命令すると、参照する先がないためエラーが発生してしまいます。

6. NullPointerException(ぬるぽ)に注意

6. NullPointerException(ぬるぽ)に注意
6. NullPointerException(ぬるぽ)に注意

Java初心者が最も多く遭遇するエラーの一つが NullPointerException です。これは、null が代入されている変数に対して、メソッドを呼び出そうとしたときに発生します。


public class ErrorExample {
    public static void main(String[] args) {
        String str = null;
        
        // nullに対してメソッドを呼ぶと実行時エラーになる
        System.out.println(str.length()); 
    }
}

実行結果:


Exception in thread "main" java.lang.NullPointerException

一方、空文字 "" であれば、オブジェクト自体は存在しているため、length() メソッドを呼んでもエラーにはならず、文字数「0」を正しく返してくれます。この違いを意識することが、バグの少ないコードを書くコツです。

7. 安全な比較のテクニック

7. 安全な比較のテクニック
7. 安全な比較のテクニック

実務では、変数が null かもしれない状況で比較を行うことがよくあります。その際、エラーを防ぐための定番の書き方があります。


public class SafetyCheck {
    public static void main(String[] args) {
        String input = null;

        // おすすめ:リテラル側から equals を呼ぶ
        if ("Java".equals(input)) {
            System.out.println("一致しました");
        } else {
            System.out.println("一致しない、またはnullです");
        }
    }
}

もし input.equals("Java") と書いてしまうと、inputnull の場合にエラーでプログラムが止まってしまいます。しかし、確実に存在する文字列リテラル "Java" から比較を始めれば、相手が null であっても安全に false を返してくれます。これを「安全な比較」と呼びます。

まとめ

まとめ
まとめ

Javaにおけるnullと空文字の違いについて詳しく理解することができました。nullは参照型変数が何も参照していないことを表し、一方で空文字は文字列オブジェクトを参照しその中身が空であることを示します。また、NULL(大文字)はJavaではリテラルとして認識されず、使用できないことも確認しました。

これらの概念を正しく理解して使い分けることで、プログラムの予期しないエラーを防ぎ、効率的なコードを書くことができます。

以下にnullと空文字の使い分けをさらに確認するためのサンプルプログラムを用意しました:


public class NullVsEmpty {
    public static void main(String[] args) {
        String data = null;

        if (data == null) {
            System.out.println("The variable 'data' is null.");
        } else if (data.isEmpty()) {
            System.out.println("The variable 'data' is an empty string.");
        } else {
            System.out.println("The variable 'data' has a value: " + data);
        }

        data = "";

        if (data == null) {
            System.out.println("The variable 'data' is null.");
        } else if (data.isEmpty()) {
            System.out.println("The variable 'data' is an empty string.");
        } else {
            System.out.println("The variable 'data' has a value: " + data);
        }
    }
}

実行結果:


The variable 'data' is null.
The variable 'data' is an empty string.

このプログラムはnullと空文字の挙動を比較するシンプルな例であり、どちらが適切かを判断する際の参考になります。

先生と生徒の振り返り会話

生徒

nullと空文字の違いがよく分かりました!空文字は中身が空なだけで、オブジェクト自体は存在しているんですね。」

先生

「その通りです。特に条件分岐を使うときは、nullチェックを忘れないようにすると、エラーを防ぎやすくなりますよ。」

生徒

「これからはnullと空文字を適切に使い分けられるように練習します!」

先生

「素晴らしい心がけですね。nullを扱う場面は多いので、しっかり練習してください。」

この記事を読んだ人からの質問

この記事を読んだ人からの質問
この記事を読んだ人からの質問

プログラミング初心者からのよくある疑問/質問を解決します

Javaでnullとは何ですか?初心者にも分かりやすく教えてください。

Javaにおけるnullとは、参照型変数が何も参照していない状態を意味します。つまり、オブジェクトがまだ存在しない、または割り当てられていないことを示す特別な値です。

Javaの空文字とnullの違いは何ですか?

空文字は中身が空の文字列オブジェクトを指し、nullは何も参照していない状態です。空文字は""で表され、nullとは全く異なる動作になります。

Javaで空文字を使ったときにエラーは発生しますか?

Javaで空文字を使用してもエラーにはなりません。空文字は有効な文字列オブジェクトなので、問題なく扱うことができます。

Javaでnullを出力するとどうなりますか?

Javaでnullを出力すると、コンソールには「null」と表示されます。これは、参照しているオブジェクトが存在しないことを意味します。
JavaSilver試験対策の一覧へ
新着記事
Python
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに解説
NumPyのdtypeとは?データ型の意味と仕組みを初心者向けに徹底解説
Dart
Dartのクラスの作り方!定義・インスタンス生成の基礎
Dartのクラスの作り方を完全解説!初心者でも理解できるクラス定義とインスタンス生成の基礎
Java
Javaの同一性と同値性
Javaの同一性と同値性をわかりやすく解説!初心者向けの基礎知識
AWS
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
【AWS】s3 lsコマンドの使い方まとめ【オプション・ワイルドカード・日付指定】
人気記事
Java
Java の Random クラスを使ってランダムな数値を生成する方法
JavaのRandomクラスの使い方を完全ガイド!初心者でもわかる乱数生成
Java
Java の getter メソッドと setter メソッドの使い方
Javaのgetterメソッドとsetterメソッドの使い方を完全ガイド!初心者でもわかるアクセス方法
AWS
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
【AWS】RDSの料金体系まとめ!ざっくり理解・高いと感じる理由も解説
AWS
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで
【AWS】S3の料金体系まとめ!無料枠・課金ポイント・見積もり方法まで

🔌 USBポート不足を解消

Type-C 1本で拡張。
開発・作業環境を一気に快適に

UGREEN USB-Cハブを見る

※ Amazon広告リンク