Sobes.tech
Junior

Java programlama dilinde String sınıfı hakkında bilgi veriniz.

sobes.tech yapay zeka

AI'dan gelen yanıt

Java'da String sınıfı, değiştirilemez bir karakter dizisini temsil eder.

Ana özellikler ve özellikler:

  • Değiştirilemezlik (Immutability): Bir String nesnesi oluşturulduktan sonra içeriği değiştirilemez. Diziyi değiştiren herhangi bir işlem (örneğin, birleştirme) aslında yeni bir String nesnesi oluşturur. Bu, güvenliği ve çok iş parçacıklı ortamlarda güvenliği artırır.
  • + operatörünün aşırı yüklenmesi: Dizeler için + operatörü, birleştirme işlemi yapmak üzere aşırı yüklenmiştir.
  • İki oluşturma yöntemi:
    • String literal kullanarak: String s1 = "Hello"; - String Havuzunda oluşturulur.
    • new operatörü kullanarak: String s2 = new String("World"); - Heap üzerinde oluşturulur, aynı literal olsa bile yeni bir nesne oluşturulabilir.
  • String Havuzu (String Pool): Belleği optimize etmek için string literal'ların saklandığı alan. Bir string literal oluşturulurken JVM önce havuzu kontrol eder. Eğer zaten varsa, mevcut nesneye referans döner. Yoksa, yeni bir nesne oluşturulur ve havuza eklenir.
  • Yararlı temel metodlar:
    • length(): Dizinin uzunluğunu döner.
    • charAt(int index): Belirtilen indeksdeki karakteri döner.
    • substring(int beginIndex, int endIndex): Alt dize döner.
    • contains(CharSequence s): Dizinin belirtilen karakter dizisini içerip içermediğini kontrol eder.
    • indexOf(int ch) / indexOf(String str): Bir karakter veya alt dizinin ilk konumunu döner.
    • equals(Object anObject): Dizelerin içeriğini karşılaştırır. İçeriği karşılaştırmak için equals() kullanmak önemlidir, == değil, çünkü referansları karşılaştırır.
    • equalsIgnoreCase(String anotherString): Büyük/küçük harf farkı gözetmeksizin karşılaştırır.
    • replace(char oldChar, char newChar) / replace(CharSequence target, CharSequence replacement): Karakterleri veya alt dizeleri değiştirir.
    • trim(): Dizinin başındaki ve sonundaki boşlukları kaldırır.
    • split(String regex): Diziyi ayırıcıya göre alt dizilere böler.

Örnek oluşturma ve bazı işlemler:

// Literal kullanarak oluşturma
String str1 = "Java";

// new kullanarak oluşturma
String str2 = new String("Java");

// Birleştirme
String str3 = str1 + " is amazing";

// İçerik karşılaştırma (equals kullanarak, == değil)
boolean areEqualContent = str1.equals(str2); // true

// Referans karşılaştırma (== kullanarak)
boolean areEqualReference = (str1 == str2); // false

// Dizinin uzunluğu
int length = str3.length();

// Karakter alma
char firstChar = str1.charAt(0); // 'J'

// İçerikte arama
boolean containsIs = str3.contains("is"); // true

String'in değiştirilemezliği, diziyi tekrar tekrar değiştirme işlemlerinde verimsizliğe yol açabilir, çünkü her seferinde yeni bir nesne oluşturulur. Bu tür senaryolar için StringBuilder veya StringBuffer kullanmak daha uygundur.