varargs
- Java kursu
- Başlangıç
- Ders 79/116
- 5 dk
int... ile esnek parametreyi öğrenirsin.
varargs: esnek parametre sayısı
Bazen kaç argüman geleceğini önceden bilemezsin. int... yazarak esnek sayıda int alabilen bir parametre tanımlarsın. Buna varargs denir.
static int sum(int... nums) {
int total = 0;
for (int n : nums) total += n;
return total;
}
sum(1, 2, 3); // 6
sum(); // 0Metot içinde nums bir int[] gibi davranır. For-each ile gezebilir, nums.length alabilirsin. varargs parametresi metodun son parametresi olmalıdır.
varargs ve for-each
varargs'ın içinde dolaşmak için for-each çok uygundur. Çünkü nums bir dizi gibi davranır; sırayla elemanları verir.
static int max(int... nums) {
int best = Integer.MIN_VALUE;
for (int n : nums) {
if (n > best) best = n;
}
return best;
}Burada Integer.MIN_VALUE, int'in alabileceği en küçük değerdir. Böylece boş çağrıda bile best başlangıçta mantıklı bir değerde olur. Döngüden sonra en büyük eleman döner.
Uygulama Esnek toplam metodu
sum adında static int metot tanımla; parametre int... nums. Gövde, tüm elemanları toplayıp döndürsün. main içinden sum(1, 2, 3, 4) çağırıp sonucu yazdır.
Başlangıç kodu
public class Main {
public static void main(String[] args) {
// Metodu 1, 2, 3, 4 argümanlarıyla çağır ve sonucu yazdır
}
// sum metodunu buraya tanımla
}Örnek çözüm
static int sum(int... nums) {
int total = 0;
for (int n : nums) total += n;
return total;
}
// main içinde:
System.out.println(sum(1, 2, 3, 4));Beklenen çıktı
10
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 varargs parametresi metodun hangi konumunda olur?
- Sadece son konumda
- İlk konumda
- Sadece tek parametreli metodlarda
- Herhangi bir konumda Doğru cevap
Açıklama: varargs daima son parametre olmalı; yoksa belirsizlik doğar.
2 Çağrı ve nums içeriği eşleştir
| Kavram | Anlamı |
|---|---|
sum(1, 2, 3) |
{1, 2, 3} |
sum() |
{} |
sum(7) |
{7} |
sum(1, 1, 1, 1) |
{1, 1, 1, 1} |
3 Boşluğu doldur: varargs tanımı
static int sum(int____ nums) {
int total = 0;
for (int n : nums) total += n;
return total;
}
static int sum(int... nums) {
int total = 0;
for (int n : nums) total += n;
return total;
}
Açıklama: int... ile varargs tanımlanır.