始めまして。
Qooと申します。
Java入門者なので的外れな質問かも知れませんが、
大目に見てください(^-^;
質問なのですが、javaでC/C++のようにデータ型変数やクラス型変数のアドレスを
表示する方法などはありますでしょうか?
Cでしたら、
int a = 10;
printf( aのアドレス : %d, &a );
で、変数aのアドレスを表示出来ると思うのですが、
Javaではどのようにしたら、変数やクラスのアドレスを表示出来るのでしょうか?
色々調べてみたら、ハッシュコードと言う物も見つけたのですが、
ちょっと違うようなので。。。
ご存知の方がいらっしゃいましたら、
教えて頂けないでしょうか。
宜しくお願いします。
ちなみに開発環境は Java 2 SDK 1.4.1 です。
やってどうするんですか?
Java の利点は、そういうことができないことだと思っているのですが。
シャノンさん返信ありがとうございます。
アドレスは何かに使うって言うわけではなく、
確認のために見てみたいと言うのが理由です。
まだJava学習中なもので、
アドレスがどのようになってのか知りたかったもので。
でも、javaではアドレスの表示とかが出来ないのが利点と言うのは、
ちょっと勉強になりました。
Java では、自動的にガベージコレクション(不要メモリの自動開放)が行われます。
その際、同時にメモリコンパクション(メモリの断片化を防ぐため、開放しなかったメ
モリを1箇所にまとめること)が行われる場合があります。
つまり、メモリブロックはプログラマの知らないところで、勝手に移動される可能性が
あるということです(もちろん、勝手に移動されてもプログラムは問題なく動くよう
に、仮想マシンがよきにはからってくれます)。
メモリが移動されてしまいますから、ある変数は、あるタイミングと、次にガベージコ
レクトが行われたタイミングでは、異なるアドレスにある可能性があります。
そのため、仮に変数のアドレスを取得できたとしても、それを使って何かを行うことは
できません。むしろ、そんなことができてしまえば、バグの温床になり得ます。
俺も Java に詳しい方ではないですが、変数のアドレスはまず取得できないと考えてよ
いでしょう。