Değişken Sayıda Parametre
Değişken uzunlukta bağımsız değişken listelerini kabul eden yöntemler tanımlayın ve bunları dizilerle birleştirin.
Değişken Sayıda Parametre, CoddyKit'te ücretsiz bir Java Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Java Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Java Academy kursu toplamda 4 dersten oluşur.
Değişken Sayıda Parametreler
Değişken uzunluklu bağımsız değişken listeleri, aynı türde istenen sayıda bağımsız değişken kabul eden metotlar tanımlamanızı sağlar; bu bağımsız değişkenler dahili olarak dizi şeklinde ele alınır.
Değişken Sayıda Parametre Tanımlama
Değişken sayıda parametre için Type... name kullanın. Bu parametre son parametre olmalıdır ve her metotta yalnızca bir tane bulunabilir.
static int sum(int... numbers) {
int total = 0;
for (int n : numbers) total += n;
return total;
}
System.out.println(sum()); // 0 (empty array)
System.out.println(sum(1)); // 1
System.out.println(sum(1, 2, 3)); // 6
System.out.println(sum(1, 2, 3, 4)); // 10
// Can also pass an array
int[] arr = {5, 10, 15};
System.out.println(sum(arr)); // 30Değişken Sayıda Parametrelerin İç Yapısı
Değişken sayıda parametreler söz dizimsel kolaylıktır. Derleyici, çağrıyı çağrı konumunda bir dizi oluşturacak şekilde dönüştürür.
// Calling: sum(1, 2, 3)
// Compiler generates: sum(new int[]{1, 2, 3})
static void printAll(String label, String... items) {
System.out.println(label + ":");
for (String item : items) System.out.println(" - " + item);
}
printAll("Fruits", "Apple", "Banana", "Cherry");
// Fruits:
// - Apple
// - Banana
// - Cherry
printAll("Empty"); // varargs is empty arrayDeğişken Sayıda Parametrelerle Karma Parametreler
Değişken sayıda parametreler son parametre olmalıdır. Öncesinde normal parametreleri kullanabilirsiniz.
static double average(String label, double... values) {
if (values.length == 0) return 0.0;
double sum = 0;
for (double v : values) sum += v;
double avg = sum / values.length;
System.out.printf("%s average: %.2f%n", label, avg);
return avg;
}
average("Math scores", 92.0, 85.5, 78.0, 95.0);
// Math scores average: 87.62
average("Single value", 100.0);
// Single value average: 100.00Jenerik Türlerle Değişken Sayıda Parametreler
Değişken sayıda parametreleri jeneriklerle kullanmak, yığın kirlenmesi uyarısına yol açar. Metodun güvenli olduğu kanıtlanabiliyorsa @SafeVarargs ile bu uyarıyı bastırın.
import java.util.Arrays;
import java.util.List;
@SafeVarargs // suppresses heap pollution warning
static <T> List<T> listOf(T... elements) {
return Arrays.asList(elements); // safe: we don't store to the array
}
List<String> names = listOf("Alice", "Bob", "Charlie");
System.out.println(names); // [Alice, Bob, Charlie]
List<Integer> scores = listOf(95, 87, 73);
System.out.println(scores); // [95, 87, 73]Değişken Sayıda Parametreler ve Aşırı Yükleme
Değişken sayıda parametre kullanan bir metot tam eşleşen başka bir metotla aşırı yüklenmişse, tam eşleşen metot tercih edilir. Değişken sayıda parametreler son çare olarak kullanılır.
static void log(String msg) { System.out.println("1-arg: " + msg); }
static void log(String m1, String m2) { System.out.println("2-arg: " + m1 + ", " + m2); }
static void log(String... msgs) { System.out.println("varargs: " + msgs.length); }
log("hello"); // 1-arg: hello
log("a", "b"); // 2-arg: a, b
log("a", "b", "c"); // varargs: 3
log(); // varargs: 0printf Değişken Sayıda Parametre Kullanır
System.out.printf değişken sayıda parametre kullanır — bir biçim dizesiyle her türden istenen sayıda bağımsız değişken kabul eder.
// printf signature: printf(String format, Object... args)
System.out.printf("%s ordered %d items for $%.2f%n",
"Alice", 3, 59.97);
// Alice ordered 3 items for $59.97
// String.format is also varargs
String msg = String.format("Error %d: %s", 404, "Not Found");
System.out.println(msg); // Error 404: Not FoundDeğişken Sayıda Parametrelerle Günlükleyici Oluşturma
Değişken sayıda parametre kullanarak anahtar-değer çiftlerini kabul eden basit bir yapılandırılmış günlükleyici uygulama.
static void logEvent(String event, Object... keyValues) {
if (keyValues.length % 2 != 0)
throw new IllegalArgumentException("Key-value pairs required");
StringBuilder sb = new StringBuilder(event);
for (int i = 0; i < keyValues.length; i += 2)
sb.append(" ").append(keyValues[i]).append("=").append(keyValues[i+1]);
System.out.println(sb);
}
logEvent("user.login", "userId", 42, "ip", "192.168.1.1", "success", true);
// user.login userId=42 ip=192.168.1.1 success=truePerformans Hususu
Değişken sayıda parametre kullanan her çağrı, yığında yeni bir dizi oluşturur. Sık çağrılan yardımcı metotlar için tahsisatı önlemek amacıyla sabit parametre sayılı aşırı yüklemeler sağlayın.
// Java's own EnumSet does this:
static <E extends Enum<E>> EnumSet<E> of(E e) { ... }
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2) { ... }
static <E extends Enum<E>> EnumSet<E> of(E e1, E e2, E e3) { ... }
static <E extends Enum<E>> EnumSet<E> of(E e1, E... rest) { ... }
// Avoids array creation for 1-3 args (most common case)
// Apply the same pattern to your own hot-path APIs:
static void report(String msg) { log(new String[]{msg}); }
static void report(String m1, String m2) { log(new String[]{m1, m2}); }
static void report(String... msgs) { log(msgs); }Değişken Sayıda Parametreler ve null
Bir değişken sayıda parametre metoduna null geçirmek belirsizdir — Java bunu null bir dizi olarak yorumlayabilir. Uyarıyı önlemek için açık bir tür dönüşümü kullanın.
static void printItems(String... items) {
if (items == null) {
System.out.println("null array passed");
return;
}
for (String item : items)
System.out.println(item != null ? item : "(null element)");
}
printItems((String[]) null); // null array passed
printItems(null, "valid"); // (null element), valid
printItems(); // empty array (0 items)Pratik: String Biçimlendirme Yardımcısı
Biçimlendirilmiş dizeyi döndüren güvenli bir printf sarmalayıcısı; biçim ve bağımsız değişken stilini eşleştirmek için değişken sayıda parametre kullanır.
static String fmt(String pattern, Object... args) {
try {
return String.format(pattern, args);
} catch (java.util.IllegalFormatException e) {
return "[FORMAT ERROR: " + e.getMessage() + "]";
}
}
System.out.println(fmt("User %s has %d orders", "Alice", 5));
// User Alice has 5 orders
System.out.println(fmt("Invalid %z format", "arg"));
// [FORMAT ERROR: Conversion = 'z' ...]Kısa Kontrol
Bir değişken sayıda parametre içeren parametrenin metot gövdesindeki türü nedir?
Özet: Değişken Sayıda Parametreler
Önemli noktalar:
- Değişken sayıda parametreler (
Type... name), dahili olarak dizi şeklinde 0 veya daha fazla bağımsız değişken kabul eder - Son parametre olmalıdır — metot başına yalnızca bir değişken sayıda parametre bulunabilir
- Çağıran taraf tek tek değerler veya bir dizi geçirebilir
- Jenerik değişken sayıda parametrelerde yığın kirlenmesi uyarılarını bastırmak için
@SafeVarargskullanın - Tam eşleşen aşırı yüklemeler, değişken sayıda parametre kullanan aşırı yüklemelere tercih edilir
- Dizi tahsisatını önlemek için sık çağrılan metotlarda sabit parametre sayılı aşırı yüklemeler sağlayın
Sıkça Sorulan Sorular
“Değişken Sayıda Parametre” dersi ücretsiz mi?
Evet — “Değişken Sayıda Parametre” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Java Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Java Academy kursu toplamda 4 dersten oluşur.
“Değişken Sayıda Parametre” dersinde ne öğreneceğim?
Değişken uzunlukta bağımsız değişken listelerini kabul eden yöntemler tanımlayın ve bunları dizilerle birleştirin. Java Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.
Java Academy öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te Java Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.
“Değişken Sayıda Parametre” dersi ne kadar sürer?
Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.
Bu Java Academy dersinde kod yazıp çalıştırabilir miyim?
Evet. Her Java Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.
Bu kursun tüm dersleri
- Yöntem Aşırı Yükleme Kuralları
- Değişken Sayıda Parametre
- Statik Alanlar ve Sabitler
- Yardımcı Sınıflar ve Statik Fabrika Yöntemleri