2012-03-04 24 views
5

Sadece basit bir soru, ancak neden bir kapsayıcıda olmayan bir dizide length nedir? Programlamada yeni başlayanlar için bu sadece getLength() yönteminin uygulanması kolay olacağını düşündüğüm için. diziler nesneler olarak yorumlanabilir rağmenDizilerde uzunluk

+0

İlgili: http://stackoverflow.com/q/9297899/697449 –

+1

Yeniden açmaya oy verin. IMO, bu bağlantılı sorunun bir kopyası DEĞİLDİR. Bu soru, Java tasarımcılarının ** 'length' alanını ** kapsamadığını gösteriyor. (Bağlantılı soru, dizilerin ve dizelerin API tutarlılığı ile ilgili ... önemli ölçüde farklı bir konu.) –

+2

Ayrıca, bu (IMO) ve ** ilginç ** soru ve cevaplamaya değer. –

cevap

1

Bir varsayım var ama bunun, java tasarımcılarının böyle yapmasının sebebi olduğunu söyleyemem.

Bir dizi, sabit bir boyuta sahip bir kapsayıcıdır (tabii ki bir Object). Ve çok basit bir yanı, bu durumda kapsülleme güzel olurdu ama kritik değil. Örneğin bir dizinin kapsüllemesi olarak düşünülebilen ArrayList'e bir göz atın.

Temel bir dizinin, onu kapsülleyen diğer türlere göre birçok avantajı vardır. Ve belki de Java'nın ilk versiyonu ortaya çıktığında, bugün sahip olduğu optimizasyonun çoğunu yoktu. Yani bir dizinin sadeliği (performans açısından) ile bir veri yapısına sahip olmak iyi bir şeydir. Ayrıca

onlar onlar belki e-posta olabilir (bu konuda ilginç şeyler bulursanız, neyse bir geriye uyumluluk :)

korumak zorunda sonradan o zaman bunu düşünün ve yoktu kadar basit olabilir güneş/oracle) lütfen gönderin! Bu güzel bir soru.

0

, onlar başka bir nesne veya değişken içeren hafıza adreslerinin gerçekten sadece sabit bir takım. Bu şekilde, onlar gibi .length, ama mutlaka yöntemler özelliklerine sahip diziler hakkında bilgi Bir çok burada bulabilirsiniz .getLength()

gibi: uygulamak kolay olurdu http://docs.oracle.com/javase/tutorial/java/nutsandbolts/arrays.html

+1

'[kaynak belirtilmeli]' – delnan

+1

Bu açıklama su tutmuyor. Aslında, diziler, örtük bir üst sınıf olarak "Object" e sahiptirler ve bu nedenle bir takım metotları vardır. Bu, Java tasarımcılarının * tüm diziler için bir 'length() yöntemi tanımlayabildiğini izler. (Bir uygulama programının yöntem ekleyememesi, burada geçerli değildir.) –

0

ve bu yüzden uygulanmadı.

Diziler, gerçek denetime sahip olmayan basit bir depolama bloklarıdır. Gelişmiş kontrollerin gerekli olmadığı durumlarda kolay ve hızlı bir depolama yöntemi sağlarlar.

Bunun gerekli olup olmadığını, büyüklüklerine kaydını tutabilir listeler, kuyruklar, bağlı listeler, çift bağlantılı listeler vb gibi şeyler kullanabilirsiniz. Açıkçası, kullandığınız dile bağlı olarak, bunları kendiniz oluşturmanız gerekebilir. Eğer dizinin uzunluğuna sahip ve hala basit dizi kullanmak istiyorsanız

, bir sayım değişkene Bir şeyi kaldırmak her zaman buna bir şey eklemek ve eksi bir her zaman 1 ekleyebilir. Bu, getLength() yöntemi ile aynı işlevi gerçekleştirecektir.

+3

Ne? Uzunluk * * kaydedilir, sadece bir alıcı yöntemiyle değil, bir kamu üyesinden geçer. – delnan