Java Dizi yığın veya yığın içinde depolanır?
eğer bu dizi gibi bir ifadesi var
int a[];
burada bir tamsayı türünde bir dizidir. Nerede tamsayı bu dizi yığın üzerinde depolanır ya da yığın?Bu primitve türü bir int, ilkel türleri yığın üzerinde depolanır.
CEVAP
Gurukulki dediği gibi, yığın üzerinde depolanır. Ancak, yazınızı, iyi niyetli bazı kişi efsane yayılıyor muhtemelen nedeniyle yanlış anlaşma önerdi "ilkel hep yığında canlı". Bu doğru değildir.Yerel değişkenlerkendi değerleri yığını var, ama tüm ilkel yerel değişkenler
Örneğin, bu göz önünde bulundurun:
public class Foo
{
int value;
}
...
public void someOtherMethod()
{
Foo f = new Foo();
...
}
Şimdi, nerede f.value
yaşar? Efsane yığında olduğunu gösteriyor - ama aslında Foo
yeni nesne, öbek hayatımızın bir parçası1. (f
kendi değerini bir kaynaktır ve üzerinde yaşayan yığını olduğunu unutmayın.)
Oradan, diziler için kolay bir adım. Sadece pek çok değişken olarak bir dizi düşünebilirsiniz - new int[3]
Bu form bir sınıf olması gibi biraz.
public class ArrayInt3
{
public readonly int length = 3;
public int value0;
public int value1;
public int value2;
}
1Aslında, bu daha karışık bir durum. Yığın/yığın ayrım çoğunlukla bir uygulama ayrıntı - sanırım bazı Jvm'ler, muhtemelen deneysel olanlar, belli bir nesne asla "kaçar" bir yöntem ve tahsis tüm nesne yığını. Ancakkavramsal olarakeğer ilgilenmek isterseniz öbek üzerinde.
Yığın üzerinde yeni bir dizi oluşturma...
Geçerli Java yığın izlemesi olsun...
Bu kaybetmeden Java Rethrowing istisna...
Nasıl başa "java.lang.OutOfMemory...
Java yığın terminoloji: eski ve daimi ...