Merhaba Arkadaslar ,
Bu yazimizda , array/diziler konusuna devam edecegiz ve diziler konusunu burada sonlandiracagi.Burada dizi elamanlarina deger atama ve dizilerin birine atanmasini konusuna biraz daha yakindan bakacagiz.
Bir dizinin farkli tipte elemanlari olsa bile, sadece tek bir tipte tanimlanabilir. ( int [] ,String[] , Animal[] )
int tipinde bir dizi elemani, byte, short veya char turunde olabilir , long , float ya da double turunde olamaz.
public class Test1 { public static void main(String[] args) { int[] coolArray = new int[6]; byte b = 10; char c = 'c'; short s = 20; long l = 50; float f = 10; double d = 100; coolArray[0] = b; coolArray[1] = c; coolArray[2] = s; // coolArray[3] = l; // compiler error // coolArray[4] =f //compiler error //coolArray[5] = d; //compiler error for (int i : coolArray) { System.out.print(i + " "); } } }
Referans tipte diziler icin, IS-A kuralina uygun olacak sekilde eleman atama islemi gerceklestirilebilir.
interface Vehicle { } class Car implements Vehicle { } class Ford extends Car { } class Fiat extends Car { } public class Test2 { public static void main(String[] args) { Vehicle[] vh = { new Car(), new Ford(), new Fiat() }; // Car IS-A Vehicle // Ford IS-A Vehicle // Fiat IS-A Vehicle Car[] car = { new Car(), new Ford(), new Fiat() }; // Ford IS-A Car // Fiat IS-A Car Ford[] ford = { new Ford() }; // Bu diziye new Fiat() veya new Car() eklenemez , cunku IS-A kuralina // uygun degil. } }
Dizi referanslarinin birbirine atanmasini inceleyecek olursak , bir int tipinde diziye byte, short, byte turunde degisken atanabilirken, int tipinde diziye short ya da byte tipinde bir dizi atanamaz.
public class Test3 { public static void main(String[] args) { int[] intArray; int[] intArray2 = new int[5]; byte[] byteArray = new byte[10]; short[] shortArray = new short[10]; intArray = intArray2; // intArray = byteArray; //compile error //byteArray = shortArray; //compile error } }
Referans tipte diziler icin IS-A kuralina uygun olarak degisken atama islemi gercektirilebilir;
Vehicle[] vehicle; Car[] cars; Fiat[] fiatArray = new Fiat[5]; Ford[] fordArray = new Ford[10]; vehicle = fiatArray; //Fiat IS-A Vehicle vehicle = fordArray; // Ford IS-A Vehicle cars = fiatArray; // Fiat IS-A Car cars = fordArray; // Ford IS-A Car // fiatArray = fordArray; // Ford IS-A Car kuralina uygun degil
Cok boyutlu diziler ile tek boyutlu diziler arasindaki ornek atama islemlerine bakalim ;
public class Test5 { public static void main(String[] args) { int[] intArray; int[][] intMultiArray = new int[5][]; // intArray = intMultiArray; // compile error // 2 boyutlu dizi tek boyutlu diziye atanamaz // intMultiArray =intArray; // Tek boyutlu dizi 2 boyutlu diziye atanamaz. intArray = intMultiArray[0]; //intMultiArray[0]; tek boyutlu bir int dizidir, ve intArray'e atanabilir. int[] intArray2 = intMultiArray[1]; } }