Desen Eşleştirme
Coddy'nin Java Journey'sinin Mantık & Akış bölümünün bir parçası. Ders 37 / 59.
Java'da desen eşleştirme, bir nesnenin belirli bir türe sahip olup olmadığını test etmenize ve bileşenlerini ondan çıkarmanıza olanak tanır. Tür denetimi ve tür dönüştürme işlemlerini basitleştirir.
instanceof ile desen eşleştirmenin nasıl kullanılacağını görelim:
Object obj = "Hello";
if (obj instanceof String str) {
// str otomatik olarak String türüne dönüştürülür
System.out.println(str.toUpperCase());
}Yukarıdaki kodu çalıştırdıktan sonra çıktı şöyledir:
"HELLO"
Desen eşleştirme kontrollerini else if ile zincirleme olarak da kullanabilirsiniz:
Object value = 42;
String result;
if (value instanceof Integer i) {
result = "Number: " + i;
} else if (value instanceof String s) {
result = "Text: " + s;
} else {
result = "Unknown";
}Yukarıdaki kodu çalıştırdıktan sonra, result şunu içerir:
“Number: 42”
Görev
KolayprocessValue adlı ve bir argüman alan bir yöntem oluştur:
- Farklı türlerde olabilecek bir Object (
value)
Yöntem, değeri işlemek ve aşağıdaki kurallara göre bir dize döndürmek için instanceof ile desen eşleştirme kullanmalıdır:
- Integer ise: ardından değerin iki katı gelen "Number: " döndür
- String ise: ardından değerin büyük harfli hâli gelen "Text: " döndür
- Boolean ise: ardından karşıt değer gelen "Boolean: " döndür (true false olur ve bunun tersi de geçerlidir)
- Diğer tüm türler için: "Unknown" döndür
Kendin dene
import java.util.Scanner;
public class Main {
public static String processValue(Object value) {
// TODO: Değeri işlemek için instanceof ile örüntü eşleştirmesi kullan
// Integer ise: "Number: " + (value * 2) döndür
// String ise: "Text: " + value.toUpperCase() döndür
// Boolean ise: "Boolean: " + (!value) döndür
// Diğer tüm türler için: "Unknown" döndür
}
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String type = scanner.nextLine();
String inputValue = scanner.nextLine();
Object value = switch(type) {
case "Integer" -> Integer.parseInt(inputValue);
case "String" -> inputValue;
case "Boolean" -> Boolean.parseBoolean(inputValue);
default -> inputValue;
};
System.out.println(processValue(value));
}
}Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Mantık & Akış bölümündeki tüm dersler
1Çok Boyutlu Diziler
2D Diziler Temelleri2D Dizi Elemanlarına Erişim2D Dizilerle İç İçe DöngülerÖzet - 2D DizilerMatris Toplama ve ÇıkarmaJagged Diziler3D Diziler ve ÖtesiYaygın 2D Dizi DesenleriÖzet - Diziler Hakkında Her Şey2HashMap Bölüm 1
HashMap Nedir?HashMap TanımlamaDeğerlere ErişimAnahtarın Varlığını Kontrol EtmeSözlükleri DeğiştirmeÖzet - HashMap3HashMap Bölüm 2
HashMap YöntemlerikeySet() ile YinelemeentrySet() ile Yinelemeİç İçe HashMapÖzet - Depo YönetimiÖzet - HashMap İşlemleri6İleri Akış Kontrolü
Etiketli İfadelerSwitch İfadesiDesen EşleştirmeKoruyucu Yan CümlelerÖzet - Akış Kontrolü9Proje - Benzersiz Kelime Sayacı
Metin Girişi ve DepolamaKelime İşlemeKendi başına pratik yap: Online Java derleyicisi