Bu yazimda Effective Java kitabindaki Avoid Creating Unnecessary Objects maddesindeki bir ornekten bahsedecegim. Java da Autoboxing - Unboxing kavramlari
Yapacagimiz islem tum integerlari toplayan bir kod yazmak. Sum'i long olarak tanimladik cunku int deger toplamin sonucunu tutmak icin kucuk kaliyor.
private static long sum() {
Long sum = 0L;
for (long i = 0; i <= Integer.MAX_VALUE; i++)
sum += i;
return sum;
}
Bu kodu calistirdigimizda sorunsuz calisiyor. Benim bilgisayarimda 8 saniyede calisti.
Bir de sum degerini Long degil de long olarak calistirmayi denedim. Bu durumda ise 1 saniye surdu.
Buradan cikarilacak ders sudur:
Prefer primitives to boxed primitives, and watch out for unintentional autoboxing
Yani diyorki boxed primitive yerine primivite tercih edin.
Boxed olanlar wrapper classlaridir. Onlari kullanmak her zaman gerekli olmayabilir.
Autoboxing Ornegi:
int olan primitive bir degeri Integer Wrapper class olan ArrayList te tutmak
private static List<Integer> sum() {
List<Integer> list = new ArrayList<>();
for (int i = 0; i <= 10; i++)
list.add(i);
return list;
}
Hiç yorum yok:
Yorum Gönder