2017-07-23 60 views
0

像C和C++這樣的編程語言使用指針,但是出於安全原因,Java並沒有使用它們,那麼它如何保持動態分配內存的記錄,這些記錄在C中是使用指針維護的?如果Java不支持指針,那麼它如何保存記錄數據保存的內存位置?

+8

Java不公開指針。 JVM的內部使用它們。 –

+0

Java使用指針或實際上JVM使用它,大多數現代語言在內部進行內存分配。 –

+0

當你聲明一個類類型的變量並給它賦值時,它將是一個「引用」,它基本上與指針具有相同的用途,除了使用它的能力更加有限:(1)你可以對它做算術; (2)你不能讓它指向一個原始類型或任意內存區域的變量。但它仍然像指針一樣工作,如果你願意,你可以把它看作是一個指針。 – ajb

回答

-1

Java確實有指針。假設你有一個類A與屬性x與setter和getter void set_x(int)int get_x()和考慮下面的代碼:

public static void foo(A a) 
{ 
    a.setx(13); 
} 

public static void main() 
{ 
    A a = new A(); 
    a.setx(12); 
    foo(a); 
    System.out.println(a.getx()); 
} 

這將打印13所以這確實是一個指針。但是,你不能像C中那樣自由地聲明一個指針,也不能指向它。你也不能指針算術。

並且Java虛擬機中有很多指針,但它們不會暴露給程序員。

+0

致敬:這個答案有什麼問題嗎? – klutt

相關問題