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();