2013-11-26 17 views
6

Sadece benim eski ders kitaplarının birinden Aşırıyordu "Bir dizinin boyutu derleme zamanında bilinmelidir" ve Java Dizi tanımlarken bu pasaj bulundu:Java Ders Kitabı:

Bir tek boyutlu dizidir 'dan oluşan düzenli bir kompozit veri türü, düzenli erişimin olduğu numaralı, düzenli homojen elemanların sabit, sabit bir topluluğudur. Sonlu son öğesinin olduğunu gösterir. Sabit boyut, dizinin boyutunun derleme zamanında bilinmesi gerektiği anlamına gelir, ancak dizisindeki tüm yuvaların anlamlı değerler içermesi gerektiği anlamına gelmez.

Ben diziler temel bir anlayışa sahip ve her gün görevleri bunları kullanarak rahat, ama ben diziler boyutu derleme zamanında bilinmesi gerektiğini ifade tarafından çok karıştı. ,

import java.util.Scanner; 

public class test 
{ 
    public static void main(String[] args) 
    { 
     Scanner scan = new Scanner(System.in); 
     System.out.print("Enter a number: "); 
     int size = scan.nextInt(); 
     int[] array = new int[size]; 
     System.out.println("You just create an array of size " + array.length); 
    } 
} 

Bu derler çalıştırır ve hatasız sonuna ulaşır:

çok basit bir Java programı bir dizi çalışma zamanında bir değişken boyutu ile örneklenen edilebileceğini göstermektedir.

Ne verir?

+0

Bu özel ders kitabı hakkında daha fazla bilgi gönderebilir misiniz (link, yazar, isim)? –

+0

Yazarın burada çok yanlış bir tanım verdiğini söylemeliyim. OP'nin çok geçerli bir eleştirisi var. Yazarın yanlış olduğunu veya onun ifadelerinin onun fikrini doğru bir şekilde sunmadığını söylerdim. Derleme zamanında dizi boyutu biliniyorsa, (eski) C/C++ –

+0

gibi bir kitaptan bahsediyoruz. Kitap, Dale, Joyce ve Weems'in Java'yı (Birinci Basım) Kullanan Nesne Tabanlı Veri Yapılarıdır. Bu paragraf 90. sayfada. – CptSupermrkt

cevap

3

Çok zayıf bir şekilde yazılmış bir paragraftır, ancak gevşek bir şekilde yorumladıysanız, doğrudur.

Örneğinizde, dizisinin boyutu, derleme zamanında bilinen dizisidir. Boyut size.

"Statik" veya "sabit" ile "derlenme zamanında bilinir" anlamında anlaşılır, bu anlaşılır bir durumdur. Elbette bildiğimiz gibi, JVM, belleği size değerine göre dinamik olarak ayırır.

Yazar, muhtemelen bir dizi ile ArrayList gibi bir şey arasında ayrım yapmaya çalışmaktadır; burada boyutlar, başlatma sırasında belirtilmek zorunda değildir.

0

Burada bir dizinin boyutu "boyut" dır. Derleyici, "büyüklükte" ne olabileceği konusunda rahatsız değil. Bellek, derleme sırasında ayrılmaz, çalışma zamanı sırasında ayrılır. Derleme zamanı değişkenleri değerleri almak için doğrudan kontrol edilmez. Derleyici, "boyut" da mevcut olanı gördüğü ve hafızayı ayırdığı sadece çalışma süresi boyunca.

İlgili konular