1
class G2 {
public static void main(String[] args) 
{   
 Short u = 127;
 Short v = 127;
 System.out.println(u==v);
 System.out.println(u!=v);
 Short u1 = 129;
 Short v1 = 129;
 System.out.println(u1==v1);
 System.out.println(u1!=v1);
}
}

範囲が -128 から 127 の間の場合、== 演算子はオブジェクト内のコンテンツまたは値に一致することを知っています。それ以外の場合、オブジェクト参照コードは 2 つのオブジェクトに一致します。なぜこの種の実装がJAVAにあるのですか?

4

2 に答える 2

4

自動ボクシングは暗黙的にShort.valueOfを呼び出します。これは、127 までの小さな数値に対してキャッシュされたボックス インスタンスを使用します。

于 2013-04-27T15:20:35.300 に答える
0

Integer-128 から 127 の範囲の内部値を持つオブジェクトは、同じ型と値のインターンされたオブジェクトと比較されるため、参照比較はtrue.

理想的には、そのようなすべての比較で が生成trueされますが、実際には可能なすべての整数に対してオブジェクトを保持することは現実的ではありません。そのため、Java 標準ではそれ以上の値を要求していません。

于 2013-04-27T15:32:24.910 に答える