Boks ve kutulama nedir ve ihtimalleri nedir?
Açık, öz ve doğru bir cevap arıyorum.
İyi açıklamalar bağlantıları Hoşgeldiniz rağmen gerçek cevap olarak ideal.
CEVAP
Kutulu değerleri primitive types *etrafında minimal sarma* 0*. Kutulu değerleri genellikle the heap nesnelere işaretçiler olarak saklanır.
İşaretçi, ve başka bir ilkel için bir işaretçi takip etmek bir kere. böylece, kutulu değerleri daha fazla bellek kullanımı ve erişim için en az iki bellek aramaları almak: Belli ki bu iç döngü içinde istediğiniz türden bir şey değil. Öte yandan, kutulu değerleri genellikle daha iyi sistemindeki diğer türleri ile oynamak. Dilinde birinci sınıf veri yapıları olduğundan, diğer veri yapıları beklenen, meta ve yapıya sahiptirler.
Java ve Haskell genel koleksiyon Kutusuz değerleri içeremez. Genel koleksiyonları .NET hiçbir ceza ile Kutusuz değerleri tutabilir. Java jenerik sadece derleme zamanı tür denetlemesi için kullanılır .NET 3**.
Java ve Haskell diziler Kutusuz var, ama kesinlikle başka bir koleksiyon daha uygunlar. Yüksek performans gerektiğinde ancak, küçük bir rahatsızlık değerinde Boks ve kutulama yükünü önlemek için.
Bu tartışma için temel bir değer the call stack yerine öbek üzerinde bir değeri için bir işaretçi olarak kayıtlı olabilir. Sık sık o sadece makine tipi (değer vermez, yüzen, vb.), yapılar, ve bazen statik bir dizi bulunur. .NET-toprak onlara değer tipleri referans tipleri (farklı olarak) çağırır. Java Millet onları ilkel türleri arama. Haskellions sadece onları Kutusuz arayın.
** Ayrıca Java, Haskell odaklanıyorum, ve C# biliyorum çünkü bu cevap,. Değer, Python, Ruby ve Javascript için sadece kutulu değerleri var. Bu aynı zamanda "Her şey"*** yaklaşım. bir nesne olarak bilinir
*** Uyarı: / JİT bazı durumlarda aslında bir değeri anlamsal kutulu kaynağı bakıldığında, güvenli bir şekilde Kutusuz bir değeri olabilir algılayabilir yeterince gelişmiş Bir derleyici çalışma zamanında. Aslında, parlak dili sayesinde kutuları bazen ücretsiz uygulayıcıları.
Boks/kutulama ve türü çevrim arasındak...
Java sabitler uygulamak için en iyi yo...
\R ve \n arasındaki fark nedir?...
Arasındaki fark NULL, '\0' v...
Kabuk, " nedir; 2>&1 " dem...