Dizgiler

Bilgisayar ve Programlamaya Giriş
StringİndeksMetotlarKarşılaştırmaBiçimleme
Sercan KÜLCÜ · Giresun Üniversitesi

Giriş

Öğrenme Çıktıları

Temsil

String ve char ayrımını açıklamak.

İşleme

İndeks ve temel metotları kullanmak.

Karşılaştırma

İçerik ve başvuru karşılaştırmasını ayırmak.

Çıktı

printf ile biçimli metin üretmek.

Temeller

String Nedir?

  • Karakter dizisini temsil eden java.lang sınıfıdır.
  • Dizgi sabitleri çift tırnakla yazılır.
  • String bir ilkel tür değil, değiştirilemez bir nesnedir.

Temeller

String Oluşturma

String ad = "Tarkan";
String boş = "";
String kopya = new String(ad);
  • Çoğunlukla new kullanmadan dizgi sabiti tercih edilir.
  • null ile boş String aynı şey değildir.

Temeller

Değişmezlik

  • String oluşturulduktan sonra içeriği değişmez.
  • Birleştirme ve dönüştürme işlemleri yeni String üretir.
  • Değişiklik sonucunu kullanmak için dönen değer saklanmalıdır.

Temeller

Değişmezlik Örneği

String şehir = "giresun";
şehir.toUpperCase();
System.out.println(şehir); // giresun
şehir = şehir.toUpperCase();
System.out.println(şehir); // GIRESUN

İndeks

İndeksleme

Jindeks 0
Aindeks 1
Vindeks 2
Aindeks 3
  • İlk karakter 0, son karakter length() - 1 indeksindedir.
  • charAt(index) belirtilen konumdaki char değerini döndürür.

Metotlar

Temel Metotlar

String s = "Java Programlama";
int uzunluk = s.length();
int konum = s.indexOf("Programlama");
String alt = s.substring(5, 16);
boolean içerir = s.contains("Java");

Metotlar

Sık String Metotları

MetotSonuç
length()Karakter/kod birimi sayısı
charAt(i)i konumundaki char
substring(a,b)a dahil, b hariç alt dizgi
indexOf(x)İlk konum veya -1
toLowerCase()Küçük harfli yeni String
trim() / strip()Kenar boşlukları kaldırılmış yeni String

Metotlar

Alt Dizgi Sınırları

  • substring başlangıç indeksini dahil, bitiş indeksini hariç tutar.
  • 0 ile length() arasındaki bitiş değeri kullanılabilir.
  • Geçersiz sınırlar StringIndexOutOfBoundsException oluşturur.

Karşılaştırma

İçerik Karşılaştırması

String a = "Giresun";
String b = new String("Giresun");
System.out.println(a == b);      // false olabilir
System.out.println(a.equals(b)); // true
  • == başvuru kimliğini karşılaştırır.
  • equals karakter içeriğini karşılaştırır.

Karşılaştırma

Karşılaştırma Metotları

MetotAmaç
equalsİçerik eşitliği
equalsIgnoreCaseBüyük-küçük harfi göz ardı eden eşitlik
startsWithBelirli metinle başlama
endsWithBelirli metinle bitme
compareToSözlüksel sıra karşılaştırması

Bellek

String Havuzu

  • Aynı dizgi sabitleri çalışma ortamında ortak nesneyi paylaşabilir.
  • new String ifadesi ayrı nesne oluşturmaya zorlar.
  • Bu ayrıntı == ile içerik karşılaştırmayı güvenilmez kılar; her zaman equals amacıyla seçilmelidir.

Girdi

Scanner ile Metin Girdisi

Scanner klavye = new Scanner(System.in);
String kelime = klavye.next();
klavye.nextLine();
String satır = klavye.nextLine();
  • next boşluğa kadar, nextLine satır sonuna kadar okur.
  • Sayı okumasından kalan satır sonu ayrıca tüketilebilir.

Performans

Birleştirme ve StringBuilder

  • + az sayıda birleştirme için okunaklıdır.
  • Döngü içinde çok sayıda birleştirme her turda yeni String oluşturabilir.
  • StringBuilder değişebilir bir karakter tamponu sunar ve toplu üretimde daha uygundur.

Performans

StringBuilder

StringBuilder metin = new StringBuilder();
for (int i = 1; i <= 3; i++) {
    metin.append(i).append(' ');
}
String sonuç = metin.toString();

Biçimleme

printf ile Biçimleme

String ad = "Java";
int adet = 3;
double fiyat = 17.5;
System.out.printf("%-8s %3d %7.2f%n", ad, adet, fiyat);
  • %s metin, %d tam sayı, %f ondalıklı sayı içindir.
  • Genişlik hizalamayı, .2 ondalık basamak sayısını belirler.

Temeller

Unicode ve Metin

  • String UTF-16 kod birimlerinden oluşur.
  • Bazı görünür karakterler iki char veya birden fazla Unicode kod noktası içerebilir.
  • Kullanıcıya görünen karakter sayısı için yalnızca length her durumda yeterli olmayabilir.

Özet

Bölüm Özeti

  • String değiştirilemez bir nesnedir; işlemler yeni String döndürür.
  • İndeksler 0'dan length()-1'e uzanır.
  • İçerik karşılaştırması equals ile, sözlüksel sıra compareTo ile yapılır.
  • Yoğun birleştirmede StringBuilder; biçimli çıktıda printf kullanılabilir.

Özet

Kontrol Soruları

  1. String neden değiştirilemez olarak adlandırılır?
  2. substring başlangıç ve bitiş sınırlarını nasıl kullanır?
  3. == ile equals arasındaki fark nedir?
  4. next ve nextLine nasıl ayrılır?
  5. Döngü içinde neden StringBuilder tercih edilebilir?

Son

Dizgiler
1 / 1Sercan KÜLCÜ, Tüm hakları saklıdır.

← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt