[英]Java object creation and referencing
我在考慮Java和內存管理,有一些我不確定的東西。
假設我們使用包裝類Integer將int類型表示為對象
我們創建兩個對象
整數x = 1; 整數y = 1:
我的問題是,Java是否在兩個不同的內存位置創建兩個相同的對象,並使用x和y引用它們。 或者它只創建一個對象並使用兩個引用指向那個對象?
另外,有沒有辦法找出對象在Java中存儲在內存中的位置?
關於整數-它具有自己的緩存,不會為-128..127范圍創建任何新實例。
因此,在您的情況下,它將引用相同的對象。
Integer.class
public static Integer valueOf(int i) {
final int offset = 128;
if (i >= -128 && i <= 127) { // must cache
return IntegerCache.cache[i + offset];
}
return new Integer(i);
}
編譯器通常會尋找這樣的優化並應用Copy on Write http://en.wikipedia.org/wiki/Copy-on-write
您可以檢查字符串,因為定義了兩個字符串,例如
String x = "test";
String y = "test":
是這樣的
if (x == y)
其他任何時間都需要.equals
。
例如
public class test
{
public static void main(String[] args){
String x = "test";
String y = "test";
if (x == y){
System.out.print("Same object");
}
}
}
然后跑
$ java test
Same object
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.