Junior
дар бораи синфи String дар забони барномасозии Java нақл кунед.
sobes.tech AI
Ҷавоб аз AI
Класи String дар Java намояндаи пайвастагии тағирнопазирии рамзҳо мебошад.
Хусусиятҳои асосӣ ва хусусиятҳо:
- Таъғирнопазирӣ (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 беҳтар аст.