Синфи String дар Java барои кор бо сатрҳо дар Java тарҳрезӣ шудааст. Ҳамаи адабии сатри дар барномаи Java муайяншуда (масалан, "abc") намунаҳои синфи String мебошанд. Биёед ба хусусиятҳои асосии он назар андозем:
- Синф интерфейсҳои
Serializable
варо амалӣ мекунадCharSequence
. Азбаски он ба баста дохил карда шудаастjava.lang
, онро ворид кардан лозим нест. - Синфи String дар Java синфи ниҳоӣ аст ва наметавонад фарзанд дошта бошад.
- Синфи String синфи тағирнопазир аст, яъне an objectҳои онро пас аз офарида шуданашон тағир додан мумкин нест. Ҳама гуна амалиёт дар an objectи String, ки боиси an objectи синфи String мегардад, боиси эҷоди an objectи нав мегардад.
- Аз сабаби тағирнопазирии худ, an objectҳои синфи String ришта бехатар мебошанд ва онҳоро дар муҳити чанд ришта истифода бурдан мумкин аст.
- Ҳар як an objectи Java метавонад ба сатр тавассути усуле табдил дода шавад
toString
, ки ҳама синфҳои Java аз синф мерос мегирандObject
.
![Синфи сатр дар Java - 1](https://cdn.javarush.com/images/article/1b7e1062-ba3a-4a8b-9757-ddb03cc42181/1024.jpeg)
Кор бо Java String
Ин яке аз синфҳои маъмултарин дар Java мебошад. Он дорои усулҳои таҳлor аломатҳои муайяни сатр, муқоиса ва ҷустуҷӯи сатрҳо, истихроҷи зерсатрҳо, сохтани нусхаи сатр бо ҳама аломатҳои ба ҳарфҳои хурд ва калон табдилшуда ва ғайра мебошад. Рӯйхати ҳамаи усулҳои синфи Stringро дар ҳуҷҷатҳои расмӣ пайдо кардан мумкин аст . Java инчунин механизми оддии пайвастшавӣ (пайваст кардани сатр), табдил додани ибтидоиро ба сатр ва баръакс амалӣ мекунад. Биёед якчанд мисолҳои кор бо синфи String дар Java дида бароем.Эҷоди сатрҳо
Роҳи осонтарини эҷоди намунаи синфи String ин таъин кардани арзиши сатри литералӣ мебошад:String s = "I love movies";
Аммо, синфи String конструкторҳои зиёде дорад , ки ба шумо имкон медиҳанд:
- an objectи дорои сатри холӣ эҷод кунед
- нусхаи тағирёбандаи сатрро эҷод кунед
- дар асоси массиви аломатҳо як сатр эҷод кунед
- дар асоси массиви byte сатр эҷод кунед (бо назардошти рамзгузорӣ)
- ва гайра.
Иловаи сатр
Илова кардани ду сатр дар Java бо истифода аз+
. Java ба шумо имкон медиҳад, ки ҳам тағирёбандаҳо ва ҳам сатрро ба ҳамдигар илова кунед:
public static void main(String[] args) {
String day = "Day";
String and = "And";
String night = "Night";
String dayAndNight = day + " " + and + " " + night;
}
Бо илова кардани an objectҳои синфи String бо an objectҳои синфҳои дигар, мо охиринро ба шакли сатр кам мекунем. Табдил додани an objectҳои синфҳои дигар ба намоиши сатр тавассути даъвати усули ғайриоддӣ toString
дар an object иҷро карда мешавад. Биёед инро бо мисоли зерин нишон диҳем:
public class StringExamples {
public static void main(String[] args) {
Human max = new Human("Max");
String out = "java object: " + max;
System.out.println(out);
// Output: Java object: Person named Max
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
Муқоисаи сатр
Барои муқоисаи сатрҳо, шумо метавонед усули зеринро истифода баредequals()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("Test String".equals(x)); // true
}
Вақте ки ҳангоми муқоисаи сатрҳо ҳолат барои мо муҳим нест, мо бояд усули зеринро истифода барем equalsIgnoreCase()
:
public static void main(String[] args) {
String x = "Test String";
System.out.println("test string".equalsIgnoreCase(x)); // true
}
Табдил додани an object/примитив ба сатр
Барои табдил додани як мисоли ҳама гуна синфи Java ё ягон навъи маълумоти ибтидоӣ ба намоиши сатр, шумо метавонед усули зеринро истифода баредString.valueOf()
:
public class StringExamples {
public static void main(String[] args) {
String a = String.valueOf(1);
String b = String.valueOf(12.0D);
String c = String.valueOf(123.4F);
String d = String.valueOf(123456L);
String s = String.valueOf(true);
String human = String.valueOf(new Human("Alex"));
System.out.println(a);
System.out.println(b);
System.out.println(c);
System.out.println(d);
System.out.println(s);
System.out.println(human);
/*
Output:
1
12.0
123.4
123456
true
Person named Alex
*/
}
static class Human {
private String name;
public Human(String name) {
this.name = name;
}
@Override
public String toString() {
return "The Man with the Name" + name;
}
}
}
Табдил додани сатр ба адад
Аксар вақт ба шумо лозим аст, ки сатрро ба рақам табдил диҳед. Синфҳои бастабандии навъи ибтидоӣ дорои усулҳое мебошанд, ки маҳз ба ин мақсад хидмат мекунанд. Ҳамаи ин усулҳо бо калимаи parse оғоз мешаванд. Тарҷумаи сатрро ба ададҳои бутун (Integer
) ва касрӣ ( Double
) дар зер баррасӣ кунед:
public static void main(String[] args) {
Integer i = Integer.parseInt("12");
Double d = Double.parseDouble("12.65D");
System.out.println(i); // 12
System.out.println(d); // 12.65
}
Табдил додани маҷмӯи сатрҳо ба намоиши сатр
Агар ба шумо лозим ояд, ки ҳамаи унсурҳои маҷмӯи сатрҳоро тавассути ҷудокунандаи ихтиёрӣ ба намоиши сатр табдил диҳед, шумо метавонед аз усулҳои зерини синфи Java String истифода баред:join(CharSequence delimiter, CharSequence... elements)
join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
delimiter
Ҷудокунандаи элемент дар куҷост ва elements
массиви сатр / намунаи ҷамъоварии сатр аст. Биёед мисолеро бубинем, ки дар он рӯйхати сатрҳоро ба сатр табдил дода, ҳар якро бо нуқта-вергул ҷудо мекунем:
public static void main(String[] args) {
List<String> people = Arrays.asList(
"Philip J. Fry",
"Turanga Leela",
"Bender Bending Rodriguez",
"Hubert Farnsworth",
"Hermes Conrad",
"John D. Zoidberg",
"Amy Wong"
);
String peopleString = String.join("; ", people);
System.out.println(peopleString);
/*
Output:
Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
*/
}
Тақсим кардани сатр ба массиви сатр
split(String regex)
Ин амалиёт бо усули ҷудокунанда иҷро мешавад regex
. Дар мисоли дар поён овардашуда, мо амалиёти муқобor он чизеро, ки дар мисоли қаблӣ иҷро карда будем, иҷро хоҳем кард:
public static void main(String[] args) {
String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";
String[] peopleArray = people.split("; ");
for (String human : peopleArray) {
System.out.println(human);
}
/*
Output:
Philip J. Fry
Turanga Leela
Bender Bending Rodriguez
Hubert Farnsworth
Hermes Conrad
John D. Zoidberg
Amy Wong
*/
}
Муайян кардани мавқеи элемент дар сатр
Дар забони Java, String маҷмӯи усулҳоро барои муайян кардани мавқеи аломат/зери сатр дар сатр таъмин менамояд:indexOf(int ch)
indexOf(int ch, int fromIndex)
indexOf(String str)
indexOf(String str, int fromIndex)
lastIndexOf(int ch)
lastIndexOf(int ch, int fromIndex)
lastIndexOf(String str)
lastIndexOf(String str, int fromIndex)
ch
— рамзе, ки шумо ҷустуҷӯ доред (char
)str
- сатри ҷустуҷӯfromIndex
— мавқеъе, ки аз он барои ҷустуҷӯи элемент- усулҳо
indexOf
- баргардонидани мавқеи элементи аввалини ёфтшуда - усулҳо
lastIndexOf
- баргардонидани мавқеи охирин элементи ёфтшуда
A
, K
, Z
, Я
дар алифбои англисӣ пайдо кунем, аммо дар хотир доред, ки индексатсияи аломатҳо дар сатр дар Java аз сифр оғоз мешавад:
public static void main(String[] args) {
String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
System.out.println(alphabet.indexOf('A')); // 0
System.out.println(alphabet.indexOf('K')); // 10
System.out.println(alphabet.indexOf('Z')); // 25
System.out.println(alphabet.indexOf('Я')); // -1
}
Хориҷ кардани зерсатри аз сатр
Барои аз сатр ҷудо кардани зерсатр, синфи String дар Java усулҳоро пешниҳод мекунад:substring(int beginIndex)
substring(int beginIndex, int endIndex)
public static void main(String[] args) {
String filePath = "D:\\Movies\\Futurama.mp4";
int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
String fileName = filePath.substring(lastFileSeparatorIndex + 1);
System.out.println(fileName); //9
}
Табдил додани сатр ба ҳарфҳои калон/хурд:
Синфи String усулҳои табдил додани сатр ба ҳарфҳои калон ва хурдро пешниҳод мекунад:toLowerCase()
toUpperCase()
public static void main(String[] args) {
String fry = "Philip J. Fry";
String lowerCaseFry = fry.toLowerCase();
String upperCaseFry = fry.toUpperCase();
System.out.println(lowerCaseFry); // philip j. fry
System.out.println(upperCaseFry); // PHILIP J. FRY
}
Кор бо ин синфи Java дар сатҳҳои ибтидоии курси онлайни JavaRush омӯхта мешавад:
- Муқаддима ба String дар сатҳи 1, лексияи 4 аз ҷустуҷӯи Java Syntax дода мешавад.
- Сохтори дохorи String, усули зерсатр дар сатҳи 2, лексияи 3-юми квести Java Multithreading омӯхта мешавад.
- Ҷустуҷӯ, гирифтан, нест кардани зерсатри дар сатр дар сатҳи 2, лексияи 4-уми квести Java Multithreading омӯхта мешавад.
- Усули String.format дар сатҳи 2, лексияи 6 квести Java Multithreading фаро гирифта шудааст.
Сарчашмаҳои иловагӣ
Маълумот дар бораи синфи String инчунин дар мақолаҳои дигар дар ҷомеаи JavaRush оварда шудааст:- Сатрҳо дар Java - Ин мақола баъзе асосҳоро оид ба кор бо сатрҳо дар Java фаро мегирад.
- Java String. Саволҳо ва ҷавобҳои мусоҳиба, қисми 1 - ин мақола саволҳои мусоҳибаро дар мавзӯъ баррасӣ мекунад
String
ва инчунин ба саволҳо бо тавзеҳот ва мисолҳои рамзӣ ҷавоб медиҳад. - Сатрҳо дар Java (класс java.lang.String) - ин мақола таҳлor амиқтари синфи String ва инчунин нозукиҳои кор бо ин синфро баррасӣ мекунад.
GO TO FULL VERSION