当サイト「ドロイドブログ」を運営しています、ゆーちゃまさんです^^
Webアプリ開発3年位、その後10年位Androidアプリを開発しています。
様々な例外がありますが、圧倒的にお目にかかる機会の多い例外がぬるぽになります。
javaを勉強中や開発を始めたばかりの方で
- NullPointerExceptionって結局どーしたら発生するの?
- 自分でヌルぽの説明ができない
と疑問に思っている方、たくさんいると思います。
ちなみに僕も、javaを勉強している当時はどうして発生するか説明が出来ませんでした。
今では現役で10年以上も開発をしているので、当然わかりますし、分からない気持ちも分かります。
なので、当時の僕と同じように
- nullを変数に代入したらダメなのかな??
- 良く分からないから発生した場所が分かっても対処できない
と疑問に思っている方に対して、現役でアプリ開発している僕が
こーやって説明されてればわかりやすかった!という内容で解説します!
何となくで、ちゃんと理解していなくてもコーディングできてしまうのですが、
そのままだと後々困ります。
(実際に結構現役エンジニアでもいます…言えないですけど。。)

簡単ですよ^^今の内に理解しちゃいましょう。
オンラインレッスン始めました!
zoomでのオンラインレッスンをはじめました^^
マンツーマンで対応しますので、自由に質問していただけます。
javaの基礎から、転職に関する相談、Androidアプリ開発・そのた幅広く対応します。
> Androidアプリの開発・プログラミング基礎を丁寧に教えます!
- マンツーマンでjava基礎、わからない部分を丁寧に解説!
- Androidアプリ開発の方法・技術的な解説
- ITエンジニア転職の相談
- ITスクール選びで悩んでいる
- 実際に現場で習得しておきたいことを教えます^^
など内容は幅広くたいおういたします^^
お気軽に相談してください!
結論
チェックポイント
「何も参照していない変数」のメソッドを使おうとすると発生します

何となく分かるような…分からないような…の方も大丈夫!
ではわかりやすく解説します^^
例文
1 2 3 4 | StringtestStr="あいうえお"; System.out.println(testStr.length()); testStr=null; System.out.println(testStr.length()); |
2行目は文字列の長さが表示されますね。
4行目で nullを代入して、5行目で再度testStrの長さを表示すると…
ここでNullPointerExceptionが発生します。
この例外の内容は、何も参照してないです!ってことなんですよね。
testStr変数は箱のようなもので、中に実際にものが入っているわけではありません。
メモリ上に存在している”あいうえお”がある住所が入っています。
“あいうえお”の場所・住所が testStrに入っているので
testStr.length() とすると、パソコンがtestStrの中の住所を見て”あいうえお”がある場所を知って、length()を実行する感じですね。
null というのは、参照なしっていう意味です。
null を変数に代入するということは、その変数は何も参照していませんよーと言う事です。
言い換えると中に住所は入ってません。
4行目でnullを代入しているので、testStrはnull 何も住所が入っていない状態になります。
住所が入っていないのに、length()を使用すると・・・
length()使えって言われても、住所が入っていないから使えないよ!
と怒るって事ですね。
まとめ
チェックポイント
変数にnullを代入するだけでは、NullPointerは発生しません

これ、よく勘違いしている人がいるんですよ。
変数は何も参照していませんよーと設定しているだけなので特に怒られることはないです。
nullの変数.XXXX() 何も参照していない変数の関数を使用すると、NullPointerExceptionが発生するという事になります。
これで、例外ログをみて あ、この変数がnullだから例外出てるんだなーというのが分かるわけですね!
説明うまく出来ているか少し不安ですが、この記事をみてなるほど!
って思ってもらえたらうれしいです!
因みに、kotlinだと testStr?.length() で、testStrがnullの場合実行されません。
nullチェックの必要が無いです!
今回はjavaで説明していますが、他の言語のぬるぽも同じです。
ありがとうございました!
皆さん頑張りましょー!
こちらの記事もどうぞ^^
⇒ ⇒ ⇒ 【Android勉強】SharedPreferencesの便利な使用方法を教えます
⇒ ⇒ ⇒ 【Android ImageView】Web上画像はpicassoを使って表示しよう!
⇒ ⇒ ⇒ 【java map】Mapの使い方、使いどころを実例で解説
⇒ ⇒ ⇒ 【java 配列の基礎】配列はこれだけ覚えておけばOK!徹底解説。
コメント