Sobes.tech
Junior

Referans türlerini primitive türlere ve vice versa nasıl dönüştürürdünüz?

sobes.tech yapay zeka

AI'dan gelen yanıt

Referans tipleri (örneğin, Integer, Double, Boolean) için otomatik kutulama (auto-boxing) kullanılır. JVM, gerek duyulduğunda referans tipini otomatik olarak karşılık gelen ilkel türe dönüştürür.

// İlkel tip
int primitiveInt = 10;

// İlkel tipten referans tipi oluşturma (auto-boxing)
Integer objectInt = primitiveInt; // Otomatik int'ten Integer'a dönüşüm

// Referans tipini tekrar ilkel türe dönüştürme (auto-unboxing)
int newPrimitiveInt = objectInt; // Otomatik Integer'dan int'e dönüşüm

İlkel tiplerden referans tiplerine (örneğin, int'ten Integer'a, double'dan Double'a, boolean'dan Boolean'a) auto-boxing kullanılır. JVM, otomatik olarak ilkel değerden bir nesne oluşturur.

// İlkel tip
double primitiveDouble = 3.14;

// İlkel tipten referans tipi oluşturma (auto-boxing)
Double objectDouble = primitiveDouble; // Otomatik double'dan Double'a dönüşüm

// Referans tipini tekrar ilkel türe dönüştürme (auto-unboxing)
double newPrimitiveDouble = objectDouble; // Otomatik Double'dan double'a dönüşüm

Unboxing sırasında, referans tipinin null olması durumunda NullPointerException oluşabileceğini unutmamak önemlidir.

Ayrıca, auto-boxing/autounboxing'den önce, intValue(), doubleValue(), booleanValue() gibi açık yöntemler kullanılarak referans tipleri ilkel türe dönüştürülüyordu ve wrapper sınıflarının yapıcıları veya valueOf() gibi statik yöntemler kullanılarak ilkel tipler referans tiplerine dönüştürülüyordu. Auto-boxing/autounboxing bu süreci büyük ölçüde basitleştirdi.

// Auto-boxing/autounboxing'den önce açık dönüşüm
Integer explicitInteger = new Integer(25); // Yapıcı kullanımı (artık önerilmez)
int explicitInt = explicitInteger.intValue(); // intValue() yöntemi kullanımı

// `valueOf()` statik yöntemi kullanımı (tercih edilir)
Integer valueOfInteger = Integer.valueOf(50);
int valueOfInt = valueOfInteger.intValue();