14 参照型(String)

| コメント(0)

Stirng c = "あい";
if (c== "あい" ) {

Book.png

と記述するとコンパイルエラーとなる。
これは、Stringが参照型なので "あい" と比較できないからである。

参照型って?

通常の変数はint型は4バイト、double型は8バイトとサイズが決まっている。
int a=110 でも int b=1356 でも同じメモリ数を確保する。
しかし、Stringは代入する値によって大きさが変化する。
c="あ" もあれば c="あいうえお" もある。変数cのサイズが変わる。

javaでは文字列は、本の目次ページに変数cを管理し、実際の値は
「ページを参照してさい」と、なっている。まさに参照である。

説明では、目次はスタック領域、参照先のページはヒープ領域と呼ばれている。

配列も行や列の大きさが変化するので参照型となっている。

String 型での比較は

String c = "あいうえお";
if (c.equals("あいうえお")) {

としなければならない。

問題14

String c = "あいうえお";
if (c.equals("あいうえお")) {
}
if ("あいうえお".equals(c)) {
}

2つの比較は同じ?同じでなければその違いは?