skillup

技術ブログ

Java

配列の参照の仕方

投稿日:

変数が存在しているにもかかわらず値が入っていないときは、プログラミングではNULLという表記をします。(ちなみに空白が入っているのとは違います。)

これはプログラマにとってはほぼ常識的な内容なのですが、先日は配列の参照でこれを私自身理解していないことがありました。

arr[i]が存在しないとき

NULLは確かに値が入っていないということですが、変数自体は定義されています。変数というのは厳密に言えばメモリの番地ですが、その場所に何も入っていない、という状態が定義されているわけです。

これと違うのはそもそもその変数自体が存在しないときです。これは変数だとあまりないのですが、配列では比較的遭遇しやすいポイントかと思います。

例えば上記のようなコードは例外(ArrayIndexOutOfBoundsException)がでます。

NULLチェックをしているのに?と最初は思っていたのですが、そもそも上記ケースの場合arr[3]という場所はどこにも定義されていません。

NULLというのは繰り返しますが、データの場所は定義されているが、何もない状態を指します。上記の場合データの場所自体が定義されていないのでNULLとは違うわけですね・・・・

まあ、PHPだと上記みたいなコードでもNoticeエラーが出るだけでそのまま通ってしまうことと、変数の未定義の状態(いわゆるNULL)と上記の配列のケースが同じなため混同してました・・・

ちなみに上記のようなソースの場合、当たり前ですが配列のインデックスの最大値でループ回数を定義すれば防ぐことができます。

-Java

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

no image

JavaEEとは?

JavaEEのブログといいつつ、JavaEEについて全然書いていませんでした・・・ ちょっとJavaEEについて書かせていただきます。 Contents1 そもそもJavaとは?1.1 Javaの定義 …

no image

JSPでのAjax(dwr使用)

JSPネタ3本目。 Ajaxです。 こちらも独自のライブラリを使うようですね。 drwというものが有名のようです。 Contents1 dwr1.1 pomでの記述1.2 web.xml1.3 dwr …

no image

Javaのstreamまとめ

以前にもちょっと扱ったJavaのStreamに関してまとめ Contents1 過去のリンク2 ソース3 注意事項4 参考リンク 過去のリンク MapのStream http://skill-up-e …

no image

動的な置換

前回、置換に関する記事をまとめましたが動的な置換について勉強する機会があったのでまとめておきます。一般に置換表現というのはほとんどが静的なものかと思います。 例えば <intpu type=&# …

no image

GlassFishとTomcatの違い

JavaEEの開発を始めてからは基本的にサーバーとしてGlassFishを使っています。 一般的なJavaのサーバーというとTomcatが有名ではないでしょうか。少なくとも私はTomcatしか知りませ …

アーカイブ