0
像C和C++這樣的編程語言使用指針,但是出於安全原因,Java並沒有使用它們,那麼它如何保持動態分配內存的記錄,這些記錄在C中是使用指針維護的?如果Java不支持指針,那麼它如何保存記錄數據保存的內存位置?
像C和C++這樣的編程語言使用指針,但是出於安全原因,Java並沒有使用它們,那麼它如何保持動態分配內存的記錄,這些記錄在C中是使用指針維護的?如果Java不支持指針,那麼它如何保存記錄數據保存的內存位置?
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虛擬機中有很多指針,但它們不會暴露給程序員。
致敬:這個答案有什麼問題嗎? – klutt
Java不公開指針。 JVM的內部使用它們。 –
Java使用指針或實際上JVM使用它,大多數現代語言在內部進行內存分配。 –
當你聲明一個類類型的變量並給它賦值時,它將是一個「引用」,它基本上與指針具有相同的用途,除了使用它的能力更加有限:(1)你可以對它做算術; (2)你不能讓它指向一個原始類型或任意內存區域的變量。但它仍然像指針一樣工作,如果你願意,你可以把它看作是一個指針。 – ajb