From 1dbc1b1ea7234e07c94447c4be09d1c3d707bd21 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Thu, 27 Nov 2025 13:32:36 +0300 Subject: [PATCH 1/4] Document Java Arrays and Their Usage Added comprehensive explanations about arrays in Java, including their structure, usage, and examples of functions that manipulate arrays. --- array.md | 107 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 array.md diff --git a/array.md b/array.md new file mode 100644 index 0000000..c61e1f4 --- /dev/null +++ b/array.md @@ -0,0 +1,107 @@ +# Dizilerin Genel Mantıkları + +- Java'da Diziler (Arrays) , her değer için ayrı değişkenler oluşturmak yerine, birden çok değeri tek bir değişkende depolamak için kullanılır. +- Değişkenler hafızada tek bir değer tutmamızı sağlar. Fakat bazı durumlarda, birden çok veriyi bir arada bulundurmak isteriz. +- Örneğin, bir sınıfta okuyan 20 öğrenci olsun. Bu 20 öğrenci için hafızada ayrı ayrı 20 tane değişken oluşturmak yerine, tek bir değişken kullanarak 20 öğrencinin koleksiyonunu tutmak isteyebiliriz. +- Bu gibi durumlarda dizileri kullanırız. Dizi, aynı türden birden fazla değişkeni tutmamızı sağlayan hafıza birimidir. +- Kısaca, dizileri aynı türden elemanları gruplamak için kullanırız. Dizi oluşturduktan sonra dizinin içerisindeki elemanlara indeks numarasıyla ulaşır ve değiştiririz. +- Ayrıca, çok boyutlu diziler oluşturmak da mümkündür. Tek boyutlu dizi kullanabileceğimiz gibi 2 veya 3 boyutlu diziler de oluşturabiliriz. 2 boyutlu dizilere matris denir. +- Dizi (Array) kavramı programlama dillerinde bir veri tipini ifade eder. Bu veri tipi liste halindeki ardışık verileri bir arada tutan yapıya denilir. +- Bu ardışık yapıya ait elemanlara indis yoluyla erişim sağlanabilir. Diziler sabit boyutludur ve tanımlanırken boyutları belirtilir. + +image + +- Yukarıdaki örnek 10 eleman boyutunda "Integer" veri tipi tutan bir dizidir. Dizilerdeki herhangi bir elemana ulaşmak için indis numaraları kullanılır. +- Dizi indisleri her zaman 0'dan başlar o yüzden dizinin son elemanının değeri, dizi boyutuna eşit değildir ve bu dikkat edilmesi gereken bir konudur. + +- Dizinin hafızada bir başlangıç adresi olur ve ardışık olan diğer elemanlar sırayla hafızaya yerleştirilir. Diziler "new" anahtar sözcüğüyle oluşturulur. Böylece, Heap Hafıza bölgesinde yer kaplarlar. + + ```java + double[] myList; // tercih edilen yol + +veya + +double myList[]; // başka türlü tanımlama biçimi +``` +- Diziler veri tipi ve [] parantezler ile belirtilir. Yukarıda iki farklı tanımı görülmektedir. Hafızadan yer alıp diziye alan ayırabilmek için "new" anahtar kelimesi kullanılır. + +```java +double[] myList = new double[10]; +``` +- Yukarıda maksimum 10 eleman alabilen "double" veri tipinde olan bir dizi oluşturulmuştur.Yukarıda "myList" isminde bir dizi tanımlamıştık. +- Tanımlanan dizi hafıza yukarıdaki şekildeki gibi tutulur. "myList" değişkeni dizinin başlangıç adresini tutar. +- Dizilerde ardışık bir sıra olduğu için ilk elemandan sonra gelen elemanların hafıza adresleri de birer birer artar. +- Dizi blok halinde yer kaplar. Diziye erişmek için indeks numarası kullanılır. Örneğin: "myList[0]" demek dizinin 1. Elemanını verecektir. +- Java'da dizilerin indeksleri sıfırdan başlar. Örneğin: "myList[5]", yani 5 nolu indeksteki dizi elemanını ver dediğimizde aslında dizinin 6. Elemanına erişmiş oluruz. + +## Örnekler: + +```java +// Java'da diziye ilk değerler süslü parantezler arasında verilir. +double[] myList = { 1.9, 2.9, 3.4, 3.5 }; + +// tüm dizi elemanlarını arada boşuk bırakarak sırayla ekrana yazdırır. +for (int i = 0; i < myList.length; i++) +{ + System.out.println(myList[i] + " "); +} +``` +- Yukarıdaki örnekte myList isimli diziye ilk değerleri hemen verilmiştir. Süslü parantezler arasında kalan değerler dizi elemanlarıdır. +- Ardından, bir "for" döngüsü ile dizi elemanları ekrana yazdırılır. + +# Dizileri Fonksiyonlara Parametre Olarak Göndermek +- Tanımladığınız dizileri fonksiyonlara parametre olarak gönderebilirsiniz. + +- Örneğin elimizde static bir fonksiyon olsun. Bu fonksiyona int tipinde verileri olan bir diziyi girdi (input) olarak vermek istersek aşağıdaki gibi olur. +```java +public static void printArray(int[] array) { + for (int i = 0; i < array.length; i++) + { + System.out.print(array[i] + " "); + } +} +public static void main(String[] args) { + int[] list = {1,2,3,4}; + printArray(list); // ← kırmızı yer burası +} +``` +#### “Kırmızı” diye anlatılan kısım tam olarak: +```java +printArray(list); +``` +- Çünkü burada list dizisini fonksiyona gönderiyorsun. Java diyor ki: + +“Ben sana bu dizinin referansının bir kopyasını veriyorum.” + +Fiziksel dizinin kendisi kopyalanmaz; sadece diziyi gösteren adresin bir kopyası gider. İşte bunun adı “Pass by Value”. + +Kısacası: +• Değişken = referans +• Fonksiyona giderken = referansın kopyası gider +• Ama iki taraf da aynı gerçek diziyi gösterir + +Bu yüzden fonksiyon diziyi değiştirirse, asıl dizin de değişmiş olur. + +- printArray ( int[] array ) kırmızı olarak işaretlediğimiz yer diziyi yerel değişken olarak fonksiyona gönderdiğimiz noktadır. +- Java'da tüm değişkenler "Pass by Value" yöntemiyle geçilir. Bu şu demektir. Sizin tanımladığınız değişkenin, nesnenin veya dizinin birebir kopyası oluşturulur. +- Bu kopya değer fonksiyona yerel değişken olarak gider. Bu Java mülakatlarında size sorulabilecek bir detaydır. + +# Dizileri Fonksiyonlardan Geri Döndürmek +- Fonksiyonlar belli bir işi yapıp sonucunda değer dönebilen veya dönmeyen kod bloklarıdır. +- Fonksiyonlar için altın kural, her fonksiyonun tek bir işi olmalıdır. Örneğin: dizi ortalaması alma işi yapan bir fonksiyon dizileri ekrana yazdırma işini yapmamalıdır. +- Veya dizilerin ortalamasını alma işi ile dizileri toplama işlemi aynı fonksiyon içinde olmamalıdır. Her biri ayrı fonksiyonlar olmalıdır. + +```java +public static int[] reverse(int[] list) +{ + int[] result = new int[list.length]; + + for (int i = 0, j = result.length - 1; i < list.length; i++, j--) + { + result[j] = list[i]; + } + + return result; +} +``` +- Yukarıda dizinin tersine çevrilmiş halini döndüren bir fonksiyon vardır. public static int[] reverse(…) koyu renkle işaretlenen alan dizi döndüreceğimizi ve bu dizinin veri tipini söylüyoruz. Burada veri tipimiz "int". From 9b4c5bd6215d4209f35b2618bcaadb3597c37966 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Thu, 27 Nov 2025 17:36:44 +0300 Subject: [PATCH 2/4] Fix code block formatting in array.md Updated code formatting for array declaration examples. --- array.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/array.md b/array.md index c61e1f4..38be581 100644 --- a/array.md +++ b/array.md @@ -16,11 +16,11 @@ - Dizinin hafızada bir başlangıç adresi olur ve ardışık olan diğer elemanlar sırayla hafızaya yerleştirilir. Diziler "new" anahtar sözcüğüyle oluşturulur. Böylece, Heap Hafıza bölgesinde yer kaplarlar. - ```java - double[] myList; // tercih edilen yol - +```java +double[] myList; // tercih edilen yol +``` veya - +```java double myList[]; // başka türlü tanımlama biçimi ``` - Diziler veri tipi ve [] parantezler ile belirtilir. Yukarıda iki farklı tanımı görülmektedir. Hafızadan yer alıp diziye alan ayırabilmek için "new" anahtar kelimesi kullanılır. From 60b59dbf5d33845db7452d476b2ba851effd1919 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Thu, 27 Nov 2025 17:38:04 +0300 Subject: [PATCH 3/4] Fix formatting and clarify array reference explanations Corrected formatting and improved clarity of explanations regarding array references and pass by value. --- array.md | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/array.md b/array.md index 38be581..36251ef 100644 --- a/array.md +++ b/array.md @@ -71,14 +71,14 @@ printArray(list); ``` - Çünkü burada list dizisini fonksiyona gönderiyorsun. Java diyor ki: -“Ben sana bu dizinin referansının bir kopyasını veriyorum.” +- “Ben sana bu dizinin referansının bir kopyasını veriyorum.” -Fiziksel dizinin kendisi kopyalanmaz; sadece diziyi gösteren adresin bir kopyası gider. İşte bunun adı “Pass by Value”. +- Fiziksel dizinin kendisi kopyalanmaz; sadece diziyi gösteren adresin bir kopyası gider. İşte bunun adı “Pass by Value”. -Kısacası: -• Değişken = referans -• Fonksiyona giderken = referansın kopyası gider -• Ama iki taraf da aynı gerçek diziyi gösterir +- Kısacası: + - Değişken = referans + - Fonksiyona giderken = referansın kopyası gider + - Ama iki taraf da aynı gerçek diziyi gösterir Bu yüzden fonksiyon diziyi değiştirirse, asıl dizin de değişmiş olur. From 23661bdb0f77c2649ecf2fab54d42dfc154c7d53 Mon Sep 17 00:00:00 2001 From: Tunahan Turker Erturk <89503561+tunisch@users.noreply.github.com> Date: Thu, 27 Nov 2025 17:40:33 +0300 Subject: [PATCH 4/4] Enhance array.md with Java array examples Added examples of array declaration and initialization in Java. --- array.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/array.md b/array.md index 36251ef..715b61d 100644 --- a/array.md +++ b/array.md @@ -15,7 +15,19 @@ - Dizi indisleri her zaman 0'dan başlar o yüzden dizinin son elemanının değeri, dizi boyutuna eşit değildir ve bu dikkat edilmesi gereken bir konudur. - Dizinin hafızada bir başlangıç adresi olur ve ardışık olan diğer elemanlar sırayla hafızaya yerleştirilir. Diziler "new" anahtar sözcüğüyle oluşturulur. Böylece, Heap Hafıza bölgesinde yer kaplarlar. - + +- Dizinin genel formülü zihinde şöyle durabilir: +```java +“Tip + [] + isim = {elemanlar}” +``` +- Ya da elemanları sonra vereceksen: +```java +“Tip + [] + isim = new Tip[boyut]” +``` +- Daha sonra: +```java +“isim[index] = değer” +``` ```java double[] myList; // tercih edilen yol ```