質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

3回答

2250閲覧

Javaで、NullPointerExceptionがスローされる時とされない時の違いは何でしょうか?

uko

総合スコア1

Null

Nullとは、プログラミング言語やデータベースにおけるデータ表現の一種です。コンテキストによって"空"もしくは"長さ0の文字列"、”未知・不明”を意味します。

NullPointerException

null値の参照型変数を参照しようとした場合に投げられる、Javaにおける例外のひとつです。

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

2クリップ

投稿2021/09/05 06:38

前提・実現したいこと

nullが入っているメンバにアクセスしSysytem.out.plint()で出力した際に、そのままコンソールに「null」と出力される場合とNullPointerExceptionがスローされる際の違いがどうしてもわかりません。

Java8 silverの問題集「黒本」にある問題と解答を引用しますので、お分かりになる方がいらっしゃればご説明いただけると助かります。

該当のソースコード

Java

#問14答え:E(NullPointerExceptionがスローされる)
される。</h3>
イメージ説明

#問56答え:A(null, 20が表示される)</h3>
イメージ説明

試したこと

それぞれの解説を読んでもこの違いについては特に記載がありませんでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

m.ts10806

2021/09/05 08:03

>Sysytem.out.plint()で出力した際に System.out.print() です・
m.ts10806

2021/09/05 08:04

問題集はいいとしてなるべく手元に動かせる環境整えましょう。理解度が全然違います。
guest

回答3

0

ベストアンサー

NullPointerExceptionってのは、nullが入ってる変数からなにか操作しようとしたときに出ます
nullが入ってる変数を読むだけなら出ません

投稿2021/09/05 06:43

y_waiwai

総合スコア88042

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uko

2021/09/06 09:09

ご回答ありがとうございます。 よくわかりました。最高です!
guest

0

14 は、 item.name とした時に item が null なので例外です。

56 は、 m.val とした時に val が null なので表示されます。

投稿2021/09/05 11:04

jimbe

総合スコア13209

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uko

2021/09/06 09:08

ご回答ありがとうございます。 itemインスタンスがそもそもnullだから例外になるということなんですね。
guest

0

既出の回答に追加して。

...Sysytem.out.plint()で出力した際に、そのままコンソールに「null」と出力される...

print()メソッドのソースを見ればわかる。print()は引数がnullだったらnullという文字列をwrite()しているので、「コンソールに「null」と出力され」る。

java

1 public void print(String s) { 2 if (s == null) { 3 s = "null"; 4 } 5 write(s); 6 }

投稿2021/09/06 01:07

編集2021/09/06 01:10
shiketa

総合スコア4061

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

uko

2021/09/06 09:07

ご回答ありがとうございます。 ということは・・・ 問14の「item.name」という引数はnullではないということでしょうか?
shiketa

2021/09/06 12:35

> ということは・・・ > 問14の「item.name」という引数はnullではないということでしょうか? んー。`Item[] items = new Item[3]`なわけだ。そして`items[1] = new Item(...)`さらに`items[2] = new Item(...)`としている。`for (item in items)`でまわせば、一周目はitemに`items[0]`が取り出される。`items[0]`は、なんですか? そしてそこで`item.name`としたらどうなりますか、といえばわかりますかね。 jimbeさんの回答はそのことを指しており、コメントをみたかぎり、あなたもそれを理解しているではないですか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問