CodeGym /Java Blogu /Rastgele /Java'da Sarmalayıcı Sınıflar
John Squirrels
Seviye
San Francisco

Java'da Sarmalayıcı Sınıflar

grupta yayınlandı
MERHABA! İlkel türleri zaten iyi biliyorsunuz ve onlarla epeyce çalıştınız. Programlamada (ve özellikle Java'da), ilkellerin birçok avantajı vardır: çok az bellek kullanırlar (ve böylece programı daha verimli hale getirirler) ve açıkça tanımlanmış bir değer aralığına sahiptirler. Bununla birlikte, Java öğrenirken, "Java'daki her şey bir nesnedir" mantrasını zaten sık sık tekrarladık. Ancak ilkeller bu sözlerle doğrudan çelişir. Onlar nesne değil. Peki, "her şey bir nesnedir" ilkemiz yanlış mı? Aslında değil. Java'da, her ilkel türün bir ikiz kardeşi, bir sarmalayıcı sınıfı vardır.

Sarmalayıcı Sınıfı nedir?

Bir sarmalayıcı, bir ilkeli dahili olarak depolayan özel bir sınıftır. Ancak bu bir sınıf olduğu için örneklerini oluşturabilirsiniz. İlkel değerleri dahili olarak depolarlar, ancak yine de gerçek nesnelerdir. Sarmalayıcı sınıf adları, karşılık gelen ilkel adlarının adlarına çok benzer (veya tam olarak aynıdır). Bu nedenle, hatırlamaları kolaydır.
İlkel Veri Türleri için Sarmalayıcı Sınıflar
İlkel Veri Türleri Sarmalayıcı Sınıfları
int tamsayı
kısa Kısa
uzun Uzun
bayt Bayt
batmadan yüzmek Batmadan yüzmek
çift Çift
karakter Karakter
mantıksal boole
Sarıcı nesneler, diğer nesnelerle aynı şekilde oluşturulur:

public static void main(String[] args) {

   Integer i = new Integer(682);
  
   Double d = new Double(2.33);
  
   Boolean b = new Boolean(false);
}
Sarmalayıcı sınıflar, ilkel türlerin eksikliklerini azaltmamıza izin verir. En bariz olanı, ilkellerin yöntemlerinin olmamasıdır. Örneğin , bir toString() yöntemi yoktur , dolayısıyla örneğin bir int'yi String'e dönüştüremezsiniz . Ancak Tamsayı sarmalayıcı sınıfı bunu kolaylaştırır.

public static void main(String[] args) {

   Integer i = new Integer(432);
  
   String s = i.toString();
}
Ancak, diğer yönde dönüştürmek daha zor olabilir. Diyelim ki bir sayı içerdiğinden emin olduğumuz bir String var. Ne olursa olsun, sayıyı String'den çıkarmak ve onu bir sayıya dönüştürmek için ilkel bir int kullanmanın yerel bir yolu yoktur . Ancak, sarmalayıcı sınıflarla yapabiliriz.

public static void main(String[] args) {

   String s = "1166628";

   Integer i = Integer.parseInt(s);

   System.out.println(i);
}
Çıktı:
1166628
String'den başarıyla bir sayı çıkardık ve onu Tamsayı referans değişkeni i'ye atadık . Bu arada, referanslarla ilgili. Argümanların yöntemlere farklı şekillerde iletildiğini zaten biliyorsunuz: değere göre ilkeller ve referansa göre nesneler. Bu bilgiyi kendi yöntemlerinizi oluştururken kullanabilirsiniz: örneğin, yönteminiz kesirli sayılar kullanıyorsa ancak referans olarak iletmek için mantığa ihtiyacınız varsa, yönteme double / float yerine Double / Float argümanlarını iletebilirsiniz . Sarmalayıcı sınıfların yöntemlerine ek olarak statik alanları da çok kullanışlı olabilir. Örneğin, şu göreve sahip olduğunuzu hayal edin: mümkün olan maksimum değeri görüntüleyinint değeri, ardından olası minimum değer. Bu sorun oldukça basit görünüyor. Ancak Google olmadan bunu yapmanız pek mümkün değil. Ancak sarmalayıcılar, bu tür "sıradan görevleri" kolayca halletmenizi sağlar:

public class Main {
   public static void main(String[] args) {

       System.out.println(Integer.MAX_VALUE);
       System.out.println(Integer.MIN_VALUE);
   }
}
Bu alanlar, daha ciddi görevleri yerine getirirken dikkatinizin dağılmasını önler. 2147483647 yazmanın (ki bu MAX_VALUE değeridir) küçük bir başarı olmadığı gerçeğinden bahsetmiyorum bile ! :) Ayrıca, önceki bir derste, wrapper nesnelerinin değişmez olduğunu belirtmiştik.

public static void main(String[] args) {

   Integer a = new Integer(0);
   Integer b = new Integer(0);

   b = a;
   a = 1;
   System.out.println(b);
}
Çıktı:
0
Başlangıçta a ile işaret edilen nesnenin durumu değişmedi (çünkü b'nin değeri de değişmiş olacaktı). String s'de olduğu gibi , sarıcı nesnenin durumunu değiştirmek yerine bellekte tamamen yeni bir nesne yaratılır. Öyleyse, Java'nın yaratıcıları neden dilde ilkel türleri bırakmaya karar verdiler? Her şeyin bir nesne olması gerektiğine ve ilkellerin ifade ettiği her şeyi ifade edebilen sarmalayıcı sınıflara sahip olduğumuza göre, neden yalnızca sarmalayıcıları dilde tutup ilkelleri kaldırmayalım? Cevap basit: performans. İlkel türler, nesnelerin "ağır" özelliklerinin çoğundan yoksun oldukları için ilkel olarak adlandırılır. Evet, nesnelerin birçok uygun yöntemi vardır, ancak bunlara her zaman ihtiyacınız olmaz. Bazen tek ihtiyacınız olan 33 veya 2,62 veya true / false sayısıdır . Nesnelerin avantajlarının önemli olmadığı ve programın çalışması için gerekli olmadığı durumlarda, ilkel öğeler göreve çok daha uygundur.
Yorumlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION