Sobes.tech
Junior

Java бағдарламалау тіліндегі String класы туралы айтыңыз.

sobes.tech AI

AI-дан жауап

Java-дағы String класы өзгермейтін таңбалар тізбегін білдіреді.

Негізгі сипаттамалары мен ерекшеліктері:

  • Өзгермейтіндік (Immutability): String объектісі құрылғаннан кейін оның мазмұны өзгермейді. Тізбекті өзгертіп көрінетін кез келген операция (мысалы, конкатенация) жаңа String объектісін құрады. Бұл қауіпсіздік пен ағын қауіпсіздігін арттырады.
  • + операторын қайта жүктеу: Тізбектер үшін + операторы қайта жүктелген, ол конкатенация жасау үшін пайдаланылады.
  • Екі тәсілмен құру:
    • Тізбектік литерал арқылы: String s1 = "Hello"; - бұл пулда (String Pool) сақталады.
    • new операторын пайдалану арқылы: String s2 = new String("World"); - бұл жадта (Heap) құрылады, тіпті пулда осындай литерал болса да, жаңа объект құрылады.
  • Тізбектер пуласы (String Pool): Жадта сақталатын тізбектер литералдарын сақтау үшін аймақ. Тізбектік литерал құрастырғанда JVM алдымен пулды тексереді. Егер мұндай тізбек бар болса, оған сілтеме қайтарылады. Егер жоқ болса, жаңа объект құрылады және пулға қосылады.
  • Негізгі пайдалы әдістер:
    • length(): Тізбектің ұзындығын қайтарады.
    • charAt(int index): Белгіленген индекс бойынша таңбаны қайтарады.
    • substring(int beginIndex, int endIndex): Ұсақ тізбекті қайтарады.
    • contains(CharSequence s): Тізбектің көрсетілген таңбалар тізбегін қамтитынын тексереді.
    • indexOf(int ch) / indexOf(String str): Бірінші кездесудің индексін қайтарады.
    • equals(Object anObject): Мазмұнын салыстырады. Маңызды: мазмұнын салыстыру үшін equals() пайдалану керек, == емес, ол сілтемелерді салыстырады.
    • equalsIgnoreCase(String anotherString): Регистрді ескермей салыстырады.
    • replace(char oldChar, char newChar) / replace(CharSequence target, CharSequence replacement): Таңбаларды немесе тізбектерді ауыстырады.
    • trim(): Тізбектің басы мен соңындағы бос орындарды жояды.
    • split(String regex): Тізбекті бөлшектерге бөледі.

Мысалдар:

// Литералды пайдалану арқылы құру
String str1 = "Java";

// `new` пайдалану арқылы құру
String str2 = new String("Java");

// Конкатенация
String str3 = str1 + " is amazing";

// Мазмұнын салыстыру (`equals` пайдалану, `==` емес)
boolean areEqualContent = str1.equals(str2); // шын

// Сілтемелерді салыстыру (`==` пайдалану)
boolean areEqualReference = (str1 == str2); // жалған

// Тізбектің ұзындығы
int length = str3.length();

// Белгіні алу
char firstChar = str1.charAt(0); // 'J'

// Қамтылуын тексеру
boolean containsIs = str3.contains("is"); // шын

String өзгермейтіндігі бірнеше рет тізбекті өзгерту кезінде тиімділіктің төмендеуіне әкелуі мүмкін, себебі әр жолы жаңа объект құрылады. Мұндай сценарийлер үшін StringBuilder немесе StringBuffer пайдалану ұсынылады.