Dizgiler
Bilgisayar ve Programlamaya Giriş
StringİndeksMetotlarKarşılaştırmaBiçimleme
Sercan KÜLCÜ · Giresun ÜniversitesiGiriş
Öğ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ı
| Metot | Sonuç |
|---|---|
| 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ı
| Metot | Amaç |
|---|---|
| equals | İçerik eşitliği |
| equalsIgnoreCase | Büyük-küçük harfi göz ardı eden eşitlik |
| startsWith | Belirli metinle başlama |
| endsWith | Belirli metinle bitme |
| compareTo | Sö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ı
- String neden değiştirilemez olarak adlandırılır?
- substring başlangıç ve bitiş sınırlarını nasıl kullanır?
- == ile equals arasındaki fark nedir?
- next ve nextLine nasıl ayrılır?
- 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