Junior
Java программалоо тилинде String классы жөнүндө айтып бериңиз.
sobes.tech AI
AIден жооп
Javaда String класы — өзгөртпөстөр тизмеги.
Негизги өзгөчөлүктөрү жана өзгөчөлүктөрү:
- Өзгөртпөстүүлүк (Immutability):
Stringобъектисин түзгөндөн кийин, анын мазмуну өзгөртүлбөйт. Ар кандай операциялар (мисалы, кошуу) чын эле жаңыStringобъектисин түзөт. Бул коопсуздукту жана көптөлүү иштөөдө коопсуздукту жогорулатат. +операторунун жүктөлүшү: Стрингдер үчүн+оператору жүктөлгөн, ал кошуу үчүн колдонулат.- Эки түзүү жолу:
- Стринг литерлери аркылуу:
String s1 = "Hello";— бул пулда түзүлөт. newоператору аркылуу:String s2 = new String("World");— бул heapте түзүлөт, жана ошол эле литерл бар болсо да, жаңы объект түзүлөт.
- Стринг литерлери аркылуу:
- Стринг пул (String Pool): Heapтин бир бөлүгү, анда оптимизация үчүн литерлдер сакталат. Стринг түзүлгөндө 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); // true
// шилтемелердин салыштырылышы (==)
boolean areEqualReference = (str1 == str2); // false
// Стрингдин узундугу
int length = str3.length();
// Белгилүү символду алуу
char firstChar = str1.charAt(0); // 'J'
// Мазмунун текшерүү
boolean containsIs = str3.contains("is"); // true
String өзгөртпөстүгү көптөлүү өзгөртүүлөрдө натыйжалуулукка терс таасир этет, анткени ар бир өзгөртүүдө жаңы объект түзүлөт. Мындай сценарийлер үчүн StringBuilder же StringBuffer колдонуу жакшыраак.