Sobes.tech
Junior

Java dasturlash tilida String sinfi haqida gapiring.

sobes.tech AI

AIdan javob

Java'da String sinfi o'zgarmas ketma-ketlikni ifodalaydi.

Asosiy xususiyatlar va xususiyatlar:

  • O'zgarmaslik (Immutability): String ob'ekti yaratilgandan so'ng, uning mazmuni o'zgartirilmaydi. Har qanday operatsiya, matnni o'zgartirayotgan ko'rinsa ham (masalan, qo'shish), aslida yangi String ob'ekti yaratiladi. Bu xavfsizlik va ko'p oqimli muhitlarda xavfsizlikni oshiradi.
  • + operatorining ortiqcha yuklanishi: Stringlar uchun + operatori qo'shilish uchun ortiqcha yuklangan.
  • Yaratishning ikki usuli:
    • String literal yordamida: String s1 = "Hello"; - String Poolda yaratiladi.
    • new operatori yordamida: String s2 = new String("World"); - Heapda yaratiladi, hatto shunga o'xshash literal mavjud bo'lsa ham yangi ob'ekt yaratilishi mumkin.
  • String Pool: Heapda joylashgan, xotira optimallashtirish uchun string literal'lar saqlanadigan joy. String literal yaratilganda JVM avvalo poolni tekshiradi. Agar shunday satr allaqachon mavjud bo'lsa, mavjud ob'ektga havola qaytariladi. Aks holda, yangi ob'ekt yaratiladi va poolga qo'shiladi.
  • Foydali asosiy metodlar:
    • length(): String uzunligini qaytaradi.
    • charAt(int index): Belgilangan indeksdagi belgi.
    • substring(int beginIndex, int endIndex): Substring qaytaradi.
    • contains(CharSequence s): String belgilangan belgi ketma-ketligini o'z ichiga oladimi, tekshiradi.
    • indexOf(int ch) / indexOf(String str): Birinchi uchrashuv indeksini qaytaradi.
    • equals(Object anObject): Stringlarning mazmunini solishtiradi. Mazmunni solishtirish uchun equals() ishlatish muhim, == emas, u havolalarni solishtiradi.
    • equalsIgnoreCase(String anotherString): Katta-kichik harflarni hisobga olmadan solishtirish.
    • replace(char oldChar, char newChar) / replace(CharSequence target, CharSequence replacement): Belgi yoki sub-String o'rnini bosadi.
    • trim(): Boshlanishi va oxiridagi bo'sh joylarni olib tashlaydi.
    • split(String regex): Stringni ajratadi.

Misol yaratish va ba'zi operatsiyalar:

// Literal yordamida yaratish
String str1 = "Java";

// new yordamida yaratish
String str2 = new String("Java");

// Qo'shish
String str3 = str1 + " is amazing";

// Mazmunni solishtirish (equals bilan, == emas)
boolean areEqualContent = str1.equals(str2); // true

// Havolalarni solishtirish (== bilan)
boolean areEqualReference = (str1 == str2); // false

// String uzunligi
int length = str3.length();

// Belgi olish
char firstChar = str1.charAt(0); // 'J'

// Ichki qismni tekshirish
boolean containsIs = str3.contains("is"); // true

String ning o'zgarmasligi, ko'p marta o'zgartirishlar qilishda samaradorlik muammolariga olib kelishi mumkin, chunki har safar yangi ob'ekt yaratiladi. Bunday holatlar uchun StringBuilder yoki StringBuffer ishlatish ma'qul.