10. String İşlemleri ve StringBuilder Kullanımı

Java logo
Java logo
image text

10. String İşlemleri ve StringBuilder Kullanımı

Java programlama dilinde String sınıfı, metinsel verileri temsil etmek için kullanılır. String’ler, karakter dizilerini ifade eder ve Java’da sıklıkla kullanılan temel veri tiplerindendir. Ancak, String’lerin değiştirilemez (immutable) yapısı, bazı durumlarda performans sorunlarına yol açabilir. Bu nedenle, metinsel veriler üzerinde sık sık değişiklik yapılması gereken durumlarda StringBuilder sınıfı daha uygun bir alternatif sunar.

String Sınıfı ve Temel İşlemler

String sınıfı, metinsel verilerle çalışmak için çeşitli yöntemler sunar. İşte en sık kullanılan String metotlarından bazıları:

  • length(): String’in uzunluğunu (karakter sayısını) döndürür.
  • charAt(int index): Belirtilen index’teki karakteri döndürür.
  • substring(int beginIndex, int endIndex): Belirtilen aralıktaki alt dizeyi (substring) döndürür.
  • equals(Object obj): İki String’in içeriğinin eşit olup olmadığını kontrol eder (büyük/küçük harf duyarlı).
  • equalsIgnoreCase(String anotherString): İki String’in içeriğinin eşit olup olmadığını kontrol eder (büyük/küçük harf duyarsız).
  • concat(String str): String’in sonuna başka bir String ekler.
  • indexOf(String str): Belirtilen alt dizenin ilk geçtiği index’i döndürür.
  • lastIndexOf(String str): Belirtilen alt dizenin son geçtiği index’i döndürür.
  • replace(char oldChar, char newChar): Belirtilen karakteri başka bir karakterle değiştirir.
  • toUpperCase(): String’i büyük harflere dönüştürür.
  • toLowerCase(): String’i küçük harflere dönüştürür.
  • trim(): String’in başındaki ve sonundaki boşlukları temizler.
  • split(String regex): String’i belirtilen ayıraca göre parçalara ayırır ve bir String dizisi döndürür.

Örnek:

Java

String str = "Merhaba Dünya!";
int uzunluk = str.length(); // uzunluk = 14
char ilkKarakter = str.charAt(0); // ilkKarakter = 'M'
String altDize = str.substring(0, 7); // altDize = "Merhaba"
boolean esitMi = str.equals("Merhaba Dünya!"); // esitMi = true
String buyukHarf = str.toUpperCase(); // buyukHarf = "MERHABA DÜNYA!"

String’lerin Değişmez (Immutable) Yapısı

Java’da String nesneleri değişmezdir. Bu, bir String nesnesi oluşturulduktan sonra içeriğinin değiştirilemeyeceği anlamına gelir. String üzerinde herhangi bir değişiklik yapıldığında (örneğin, concat veya replace metotları kullanıldığında), aslında yeni bir String nesnesi oluşturulur ve eski nesne değişmeden kalır. Bu durum, özellikle sık sık String manipülasyonu yapılan durumlarda performans sorunlarına yol açabilir, çünkü her değişiklikte yeni bir nesne oluşturulması bellek tüketimini artırır ve işlem süresini uzatır.

Örnek:

Java

String str = "Merhaba";
str = str.concat(" Dünya!"); // Yeni bir String nesnesi oluşturulur

StringBuilder Sınıfı ve Avantajları

StringBuilder sınıfı, String’lerin aksine değiştirilebilir (mutable) bir yapıya sahiptir. Bu, StringBuilder nesnesi üzerinde yapılan değişikliklerin, nesnenin kendisi üzerinde gerçekleştirildiği anlamına gelir. Bu özellik, özellikle çok sayıda String manipülasyonu gerektiren durumlarda performansı önemli ölçüde artırır.

Java StringBuilder Example

StringBuilder Metotları

StringBuilder sınıfı, String’e benzer metotlar sunarken, aynı zamanda String’in değiştirilebilir yapısından kaynaklanan avantajları da beraberinde getirir. İşte en sık kullanılan StringBuilder metotlarından bazıları:

  • append(String str): StringBuilder’in sonuna belirtilen String’i ekler.
  • insert(int offset, String str): Belirtilen index’e String ekler.
  • delete(int start, int end): Belirtilen aralıktaki karakterleri siler.
  • deleteCharAt(int index): Belirtilen index’teki karakteri siler.
  • replace(int start, int end, String str): Belirtilen aralıktaki karakterleri başka bir String ile değiştirir.
  • reverse(): StringBuilder’in içeriğini tersine çevirir.
  • length(): StringBuilder’in uzunluğunu döndürür.
  • capacity(): StringBuilder’in mevcut kapasitesini (bellekte ayrılan alan) döndürür.
  • toString(): StringBuilder’in içeriğini String olarak döndürür.

Örnek:

Java

StringBuilder sb = new StringBuilder("Merhaba");
sb.append(" Dünya!"); // sb = "Merhaba Dünya!"
sb.insert(7, ", "); // sb = "Merhaba, Dünya!"
sb.delete(7, 9); // sb = "Merhaba Dünya!"
sb.reverse(); // sb = "!aynüD abahreM"
String str = sb.toString(); // str = "!aynüD abahreM"

String ve StringBuilder Arasındaki Farklar ve Ne Zaman Hangisini Kullanmalı?

String ve StringBuilder arasındaki temel fark, değiştirilebilirlik özelliğidir. String’ler değiştirilemezken, StringBuilder’lar değiştirilebilir. Bu fark, performans açısından önemli sonuçlar doğurur.

  • String: Sabit metinsel verilerle çalışırken veya metinsel veriler üzerinde nadiren değişiklik yapılması gereken durumlarda tercih edilmelidir. Ayrıca, çoklu iş parçacığı (multi-threading) ortamlarında String’lerin değişmez yapısı, veri güvenliğini sağlamak açısından avantajlıdır.
  • StringBuilder: Metinsel veriler üzerinde sık sık değişiklik yapılması gereken durumlarda (örneğin, döngüler içinde String birleştirme işlemleri) StringBuilder kullanmak, performansı önemli ölçüde artırır.

Örnek Senaryo:

Döngü içinde String birleştirme işlemi:

Java

// Kötü Örnek (String ile)
String str = "";
for (int i = 0; i < 10000; i++) {
    str = str + i; // Her döngüde yeni bir String nesnesi oluşturulur
}

// İyi Örnek (StringBuilder ile)
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 10000; i++) {
    sb.append(i); // Aynı StringBuilder nesnesi üzerinde değişiklik yapılır
}
String str = sb.toString();

Sonuç

Java’da String ve StringBuilder sınıfları, metinsel verilerle çalışmak için farklı araçlar sunar. String’lerin değişmez yapısı, basit ve güvenli bir kullanım sağlarken, StringBuilder’ın değiştirilebilir yapısı, performans gerektiren durumlarda önemli avantajlar sunar. Hangi sınıfın kullanılacağına karar verirken, uygulamanın ihtiyaçları ve performans gereksinimleri göz önünde bulundurulmalıdır.

Özetle, String işlemleri ve StringBuilder kullanımı, Java programlama dilinde metinsel verilerle çalışırken bilinmesi gereken temel konulardandır. Bu bilgileri doğru kullanarak, daha verimli ve performanslı uygulamalar geliştirebilirsiniz.

“String’lerin değişmez yapısı, güvenli ve öngörülebilir bir programlama ortamı sağlarken, StringBuilder’ın değiştirilebilir yapısı, performans gerektiren metinsel manipülasyonlarda hayati bir rol oynar.” – Java Uzmanı

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*