Javaプログラミング学習サイト ゆるゆるプログラミング

2020/03/23 公開

・null

nullは何も無いことを表す値で、その読み方は「ヌル」または「ナル」で、日本では「ヌル」と発音することが多いです。

具体的にはnullは、参照型のオブジェクトが初期化されていないことを表す値です。配列文字列(String)、クラスオブジェクトを初期化していないときにnullになります。

int型float型などのプリミティブ型nullを持つことができません。

それでは、以下のnullに関するJavaソースコードと実行結果を見てください。

NullSample1.java ← クリックしてダウンロードページに移動
001:    // 座標を格納するクラス
002:    class MyPoint {
003:    	int x, y;
004:    }
005:    
006:    
007:    public class NullSample1 {
008:    	public static void main( String[] args ) {
009:    		// MyPointの配列を5つ作成
010:    		MyPoint[] pnt;
011:    		pnt = new MyPoint[ 5 ];
012:    
013:    		// pnt[ n ]を表示
014:    		for ( int i = 0; i < pnt.length; i ++ )
015:    			System.out.println( "pnt[" + i + "]=" + pnt[ i ] );
016:    	}
017:    }

NullSample1の出力結果

pnt[0]=null
pnt[1]=null
pnt[2]=null
pnt[3]=null
pnt[4]=null

このプログラムでは、MyPointオブジェクトを格納するための配列を宣言しただけで、配列の要素にnewされたオブジェクトがないことを確認するものです。

この実行結果から、pnt[0]~pnt[4]がnullであることが確認できます。この状態では、MyPointオブジェクトのメンバ変数xとyに値を代入することはできません。

次のJavaソースコードは、NullSample1.javaにMyPointオブジェクトの初期化(new)を追加したものです。

NullSample2.java ← クリックしてダウンロードページに移動
001:    // 座標を格納するクラス
002:    class MyPoint {
003:    	int x, y;
004:    }
005:    
006:    
007:    public class NullSample2 {
008:    
009:    	public static void main( String[] args ) {
010:    		// MyPointの配列を5つ作成
011:    		MyPoint[] pnt;
012:    		pnt = new MyPoint[ 5 ];
013:    
014:    		// 各オブジェクトを作成
015:    		for ( int i = 0; i < pnt.length; i ++ )
016:    			pnt[ i ] = new MyPoint();
017:    
018:    		// pnt[ n ]を表示
019:    		for ( int i = 0; i < pnt.length; i ++ )
020:    			System.out.println( "pnt[" + i + "]=" + pnt[ i ] );
021:    	}
022:    }

NullSample2の出力結果

pnt[0]=MyPoint@1909752
pnt[1]=MyPoint@1f96302
pnt[2]=MyPoint@14eac69
pnt[3]=MyPoint@a57993
pnt[4]=MyPoint@1b84c92

pnt[0]~pnt[4]がnullでなくなったことが確認できます。これでMyPointオブジェクトのメンバ変数xとyに値を代入する準備が整いました。

さらに、次のJavaソースコードは、NullSample2.javaで作成したMyPointオブジェクトの値を代入するものです。

NullSample3.java ← クリックしてダウンロードページに移動
001:    // 座標を格納するクラス
002:    class MyPoint {
003:    	int x, y;
004:    }
005:    
006:    
007:    public class NullSample3 {
008:    
009:    	public static void main( String[] args ) {
010:    		// MyPointの配列を5つ作成
011:    		MyPoint[] pnt;
012:    		pnt = new MyPoint[ 5 ];
013:    
014:    		// 各オブジェクトを作成
015:    		for ( int i = 0; i < pnt.length; i ++ ) {
016:    			pnt[ i ] = new MyPoint();
017:    			// x,yに値を代入
018:    			pnt[ i ].x = i;
019:    			pnt[ i ].y = i * 2;
020:    		}
021:    
022:    		// pnt[ n ]のメンバ変数を表示
023:    		for ( int i = 0; i < pnt.length; i ++ ) {
024:    			System.out.println( "pnt[" + i + "].x=" + pnt[ i ].x );
025:    			System.out.println( "pnt[" + i + "].y=" + pnt[ i ].y );
026:    			System.out.println();
027:    		}
028:    	}
029:    }

NullSample3の出力結果

pnt[0].x=0
pnt[0].y=0
pnt[1].x=1
pnt[1].y=2
pnt[2].x=2
pnt[2].y=4
pnt[3].x=3
pnt[3].y=6
pnt[4].x=4
pnt[4].y=8

pnt[0]~pnt[4]のメンバ変数x,yに値が入っていることが確認できます。

■関連コンテンツ

Javaの変数 Javaで扱う変数について解説
Javaの配列 同じ型の変数をまとめた配列について解説
繰り返し処理に使用するfor文について解説-画像

for文

繰り返し処理に使用するfor文をJavaのソースコードを使って説明しています。

■新着情報

2022.07.07 外部プログラムの実行 exeファイル実行
2022.07.06 完全数 6=1+2+3

■広告

Topへ