skillup

技術ブログ

Java

配列の参照の仕方

投稿日:

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

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

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

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

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

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

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

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

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

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

-Java

執筆者:


comment

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

関連記事

no image

pretty-configでのファイルアップロード

先日、こちらのエントリーでpretty-configを使うとファイルのアップロードができない、というエラーが起こっていたのですが、本日社長により解決していただきました。 原因としてはURLがスラッシュ …

no image

RedmineAPI活用法

自社ではRedmineで基本的にタスク管理をしておりまして、チケット作成に手当がついたりします。 Redmine単体でもいろいろな機能があるのですが、 今月の作成したチケットと完了したチケットを手当と …

no image

glassfishとDB接続 ~CUI操作~

JavaEEではDBを使うときにglassfish内で設定が必要です。 基本的にはGlassFishでDB接続などのようにブラウザで管理画面から情報を入力することが可能です。 ただCUIや設定ファイル …

no image

JavaでのSQLの書き方

ちょっと小ネタです。 通常SQLを記述する場合、縦に分けて書くのが見た目にも見やすく、保守性も高いです。 例として

と書くよりは、 [ …

no image

Javaのコーディングルール

私自身、Javaで仕事をするようになってから3ヶ月ちょっとがたちました。 もともとPHPで仕事はしていましたが、我流でやっていたこともあり、コーディングのルールとかがいい加減だったんですよね・・ ボス …