1. ホーム
  2. java

[解決済み] Javaにおける変数のメモリアドレス

2022-04-27 15:40:21

質問

以下の画像をご覧ください。 javaでオブジェクトを作成する際に new キーワードで、OSからメモリアドレスを取得しています。

と書くと out.println(objName) という特殊な文字列が出力されます。質問は以下の通りです。

  1. この出力は何ですか?
  2. OSから渡されたメモリアドレスである場合。

    a) この文字列をバイナリに変換するにはどうすればよいですか?

    b) 整数変数のアドレスを1つ取得するにはどうしたらいいですか?

解決方法は?

これは、クラス名と System.identityHashCode() を '@' 文字で区切ってください。IDハッシュコードが何を表すかは、実装に依存する。多くの場合、これはオブジェクトの初期メモリアドレスですが、オブジェクトは時間の経過とともにVMによってメモリ内で移動されることがあります。したがって、(簡単に言えば)それが何であるかは当てにならない。

JVMは自由にオブジェクトを実装し、適切と思われるように移動させることができるため、変数のメモリアドレスを取得することはJava内では無意味です(ガベージコレクションなどでオブジェクトが移動するかもしれませんし、移動するかもしれません)。

Integer.toBinaryString() は整数を2進数で表示します。