2020/03/23

Javaプログラミング

null

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

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

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

Javaソースコードと実行結果 - オブジェクトを初期化しない

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

NullSample1.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
// 座標を格納するクラス
class MyPoint {
	int x, y;
}


public class NullSample1 {
	public static void main( String[] args ) {
		// MyPointの配列を5つ作成
		MyPoint[] pnt;
		pnt = new MyPoint[ 5 ];

		// pnt[ n ]を表示
		for ( int i = 0; i < pnt.length; i ++ )
			System.out.println( "pnt[" + i + "]=" + pnt[ i ] );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis NullSample1.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac NullSample1.java

NullSample1を実行

C:\talavax\javasample>java 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ソースコードと実行結果 - オブジェクトを初期化する

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

NullSample2.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
// 座標を格納するクラス
class MyPoint {
	int x, y;
}


public class NullSample2 {

	public static void main( String[] args ) {
		// MyPointの配列を5つ作成
		MyPoint[] pnt;
		pnt = new MyPoint[ 5 ];

		// 各オブジェクトを作成
		for ( int i = 0; i < pnt.length; i ++ )
			pnt[ i ] = new MyPoint();

		// pnt[ n ]を表示
		for ( int i = 0; i < pnt.length; i ++ )
			System.out.println( "pnt[" + i + "]=" + pnt[ i ] );
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis NullSample2.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac NullSample2.java

NullSample2を実行

C:\talavax\javasample>java 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ソースコードと実行結果 - オブジェクトを初期化して値を代入

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

NullSample3.java

001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
018
019
020
021
022
023
024
025
026
027
028
029
// 座標を格納するクラス
class MyPoint {
	int x, y;
}


public class NullSample3 {

	public static void main( String[] args ) {
		// MyPointの配列を5つ作成
		MyPoint[] pnt;
		pnt = new MyPoint[ 5 ];

		// 各オブジェクトを作成
		for ( int i = 0; i < pnt.length; i ++ ) {
			pnt[ i ] = new MyPoint();
			// x,yに値を代入
			pnt[ i ].x = i;
			pnt[ i ].y = i * 2;
		}

		// pnt[ n ]のメンバ変数を表示
		for ( int i = 0; i < pnt.length; i ++ ) {
			System.out.println( "pnt[" + i + "].x=" + pnt[ i ].x );
			System.out.println( "pnt[" + i + "].y=" + pnt[ i ].y );
			System.out.println();
		}
	}
}

コンパイル ソースコードが「ANSI」の場合

C:\talavax\javasample>javac -encoding sjis NullSample3.java

コンパイル ソースコードが「UTF-8」の場合

C:\talavax\javasample>javac NullSample3.java

NullSample3を実行

C:\talavax\javasample>java 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の学習に役立つソースコードを多数紹介しています。是非、ご覧ください。

2022.09.10

プログラミングで使う変数って何?

2020.03.23

数値型の変数の最小値・最大値がプログラムで取得でします。

2016.01.20

for文で変数名iがよく使われる理由について説明しています。興味のある方は是非。

2022.08.29

計算の結果が∞となるときの表現方法について解説しています。

2016.02.15

各種データ型の変数に値を代入しない場合、変数の初期値は?

2024.01.18

各種データ型の変数にnullが代入できるかを確認しました。

2024.01.23

リテラル(literal)の意味を説明しています。興味がある方は是非ご覧ください。

2020.03.23

変数やクラスに格納されている値をコンソール出力する方法は?

2020.03.23

Javaを使った簡単な応用プログラム(生年月日から年齢を計算プログラムなど)を紹介しています。

2022.07.07

コンピュータを制御するために使用する入力機能と出力機能を持つ装置のことをコンソールといいます。興味のある方は、ご覧ください。

2020.08.24

数学に関係するJavaのメソッドやソースコードなどを紹介しています。

2022.10.25

画像フォーマット形式・色・大きさ・傾きなどの変更、特定の図形(文字・記号など)を見つけたり、取り出したりする画像処理について詳しく解説。

2015.11.29

プログラミング、ITに関する用語をまとめています。

2022.10.17

プログラムの最初に実行されるメソッドは?

2022.12.13

Javaのプログラムを書いてみませんか?プログラムの書き方をくわしく説明しています。

2020.03.23

「Javaソースコード」から実行可能な「オブジェクトコード」に変換する方法をくわしく説明しています。

2020.03.23

StringクラスとStringBuilderクラスを利用したプログラミングの仕方を紹介しています。

2016.12.16

同じ型の変数(データ)を複数個まとめて管理するデータの持ちかたがあります。これが配列です。くわしくは、記事をご覧ください。

2016.01.14

Javaプログラムの構成について解説しています。詳しくは、こちらをご覧ください。

2020.03.23

Javaで扱うデータ型について説明しています。

2020.03.23

オブジェクト指向の考え方を、Javaのソースコードを使って詳しく解説しています。興味のある方は、是非ご覧ください。

2022.09.02

プログラミング言語とは?種類や特徴について説明しています。

2022.08.03

指定したフォルダに格納されているファイル名を配列に格納する方法を説明しています。

2016.11.23

指定したファイルの内容をbyte型の配列に格納する方法を説明しています。

2021.04.05

配列を使ったフィボナッチ数列を出力するプログラムを作ってみませんか?

2021.03.09

二次方程式の解を求めるプログラムを作ってみませんか?

2022.10.17

トランプゲームの1つポーカーの役を判定をプログラムを作成してみませんか?。興味のある方は、ご覧ください。

2020.08.27

キーボードで入力した整数値を配列に格納するメソッドの作り方を解説しています。

2020.08.19

キーボードで入力した整数値を配列にリストするメソッドの作り方を解説しています。

2020.08.19

Javaの変数に付ける名前のルールを説明しています。

2019.12.10

広告