フクの非日常

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CからJavaへ

Java転向中。

いつかはJavaもと思いつつ何年も過ぎた。
思ったよりJava無しでも仕事はあるものだと感じていたが、
今が切り替えの時期なのだろう。

配列変数について。
Cの配列変数とJavaの配列変数が違うことを知って驚いた。
しかし、この小さくて大きな違いがJavaの根本的な考え方だと思うと
感動を隠せないものがある。

たとえば、C言語で配列変数といえば、配列変数を指すのと、配列を指すのは
ほぼ同義と考えていた。

int aaa[5];
 memset(aaa, 0, sizeof(aaa));
 memset(aaa[0], 0, sizeof(aaa));

上記のmemsetはどちらとも同じ動きをするということだ。
しかし、Javaの場合は根本的に異なり同じ結果にはならない。
配列変数は配列の実体を参照するポインタなのである。


Javaの配列変数の記述はこうなる。
int[] a = new int[5]

配列変数の宣言をすると同時に実体の宣言をして、
実体を指すように参照先を初期化している、ということらしい。
クラスの考え方を学ぶ上でもこの違いが効いてくるようだ。

Javaをやるとおまけも付いてくる。
オブジェクト指向の解説書が延々説明していたことが
分かるようになってきた。
継承とか、ポリフォーリズムとか、こんなことを言いたかったのだね、って。

コメント


管理者にだけ表示を許可する
 

 

トラックバック

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。