Sobes.tech
Junior

რა იცით Java-ს String კლასი hakkında?

sobes.tech AI

პასუხი AI-სგან

Java-да String — бұл өзгермейтін (immutable) класс, ол таңбалар тізбегін білдіреді.

Негізгі ерекшеліктері:

  • Өзгермейтіндік: String объектісі құрылғаннан кейін оның мазмұны өзгермейді. Әрбір өзгерту сияқты көрінетін операция жаңа String объектісін қайтарады. Бұл String объектілерін ағынсыз етеді.
  • Жолдар пулы (String Pool): Java жолдар пулын қолдайды. Егер жол литералды түрде жасалса (мысалы, "hello"), JVM алдымен пулды тексереді. Егер мұндай жол бұрыннан бар болса, ол объектіге сілтемені қайтарады. Егер жоқ болса, жаңа объект пулда жасалады. new String("hello") конструкторы әрқашан жаңа объекті жасайды пулдан тыс.
  • + операторының жүктелуі: + операторы жолдарды біріктіру үшін жүктелген. Компилятор оны StringBuilder немесе StringBuffer пайдаланып оңтайландыра алады.
  • Интерфейстерді жүзеге асыру: String Serializable, Comparable<String> және CharSequence интерфейстерін жүзеге асырады.
  • Әдістер: String класы көптеген пайдалы әдістерді ұсынады: length(), charAt(), substring(), indexOf(), equals(), equalsIgnoreCase(), startsWith(), endsWith(), trim(), replace(), split() және басқа.

Жолдар құру мысалдары:

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

// Конструктор арқылы құру (жаңа объекті құрады пулдан тыс)
String str2 = new String("World");

// Таңбалар массивінен құру
char[] chars = {'J', 'a', 'v', 'a'};
String str3 = new String(chars);

Жолдарды салыстыру:

  • equals(): мазмұнын салыстырады.
  • ==: объектілердің сілтемелерін салыстырады. Литералдар үшін, мазмұны бірдей болса, әдетте пулдан бірдей сілтемелер болады, бірақ new String() арқылы жасалған объектілер үшін == false болады, тіпті мазмұны бірдей болса да.
String s1 = "java";
String s2 = "java";
String s3 = new String("java");

System.out.println(s1 == s2); // true (екеуі де пулдан)
System.out.println(s1 == s3); // false (s3 жаңа объект)
System.out.println(s1.equals(s3)); // true (мазмұнын салыстырады)

Java-да жолдарды өзгерту үшін StringBuilder (синхрондалмаған, біржолды орта үшін) және StringBuffer (синхрондалған, көпжолды орта үшін) пайдаланылады, олар өзгермелі:

// `StringBuilder` мысалы
StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
String result = sb.toString(); // қайтадан String-ке айналдырамыз
System.out.println(result); // Шығу: Hello World