7

クラスがあるとします:

    class Account {
      String name;
      int ID;
    }

それで

a1 = new Account();

a2 = new Account();

クラス Account の 2 つのインスタンスを格納する 2 つのメモリ位置を指す 2 つの変数を作成します。

私の質問は、Java がこれらのインスタンスがメモリを割り当てる大きさをどのように知ることができるかということです (文字列型を使用すると、それに任意の文字列を割り当てることができるためです。たとえば、a1.name = "Solomon I", a2.name = "Alan". これにより、各インスタンスのサイズが異なります)。

メモリの場所は、「連続した」バイト文字列です。したがって、a1 = new Account()a2 = new Account() => a1 のメモリ位置が固定されている場合 ('used memory | a1 | a2')、a1.name を非常に長い文字列にするとどうなりますか? a1 のメモリ ロケーションは a2 のメモリ ロケーションに拡張されますか?

これを読んでくれてありがとう、私の誤解があれば教えてください。

4

2 に答える 2

12

name文字列参照です (実際の文字列ではありません)。割り当てると、 String オブジェクトを「ポイント」します。

したがって、オブジェクトの一部として、java は String 参照とサイズが一定の int にスペースを「割り当てる」だけで済みます。

于 2013-03-13T11:24:36.447 に答える