کلاس String در جاوا برای کار با رشته ها در جاوا طراحی شده است. تمام حرف های رشته ای تعریف شده در یک برنامه جاوا (مثلاً "abc") نمونه هایی از کلاس String هستند. بیایید ویژگی های اصلی آن را بررسی کنیم:
- کلاس
Serializable
و رابط ها را پیاده سازی می کندCharSequence
. از آنجایی که در بسته بندی موجود استjava.lang
، نیازی به واردات نیست. - کلاس String در جاوا یک کلاس نهایی است و نمی تواند فرزند داشته باشد.
- کلاس String یک کلاس تغییرناپذیر است، به این معنی که اشیاء آن پس از ایجاد شدن قابل تغییر نیستند. هر عملیاتی بر روی یک شی String که منجر به یک شی از کلاس String شود، منجر به ایجاد یک شی جدید می شود.
- به دلیل تغییر ناپذیری، اشیاء کلاس String ایمن هستند و می توان از آنها در یک محیط چند رشته ای استفاده کرد.
- هر شی در جاوا را می توان از طریق روشی به رشته ای تبدیل کرد
toString
که تمام کلاس های جاوا از کلاس به ارث می برندObject
.
کار با جاوا استرینگ
این یکی از پرکاربردترین کلاس ها در جاوا است. دارای روش هایی برای تجزیه و تحلیل کاراکترهای خاص در یک رشته، برای مقایسه و جستجوی رشته ها، استخراج زیر رشته ها، ایجاد یک کپی از یک رشته با تبدیل تمام کاراکترها به حروف کوچک و بزرگ و غیره. لیستی از تمام متدهای کلاس String را می توان در اسناد رسمی یافت . جاوا همچنین مکانیزم ساده ای را برای الحاق (اتصال رشته ها)، تبدیل اولیه ها به رشته و بالعکس پیاده سازی می کند. بیایید به چند نمونه از کار با کلاس String در جاوا نگاه کنیم.ایجاد رشته ها
ساده ترین راه برای ایجاد یک نمونه از کلاس String این است که به آن مقدار یک string literal اختصاص دهیم:String s = "I love movies";
با این حال، کلاس String سازنده های زیادی دارد که به شما اجازه می دهد:
- یک شی حاوی یک رشته خالی ایجاد کنید
- یک کپی از یک متغیر رشته ایجاد کنید
- یک رشته بر اساس یک آرایه کاراکتر ایجاد کنید
- ایجاد یک رشته بر اساس یک آرایه بایت (با در نظر گرفتن رمزگذاری ها)
- و غیره.
اضافه کردن رشته
افزودن دو رشته در جاوا با استفاده از+
. جاوا به شما این امکان را می دهد که هم متغیرها و هم رشته ها را به یکدیگر اضافه کنید:
public static void main(String[] args) {
String day = "Day";
String and = "And";
String night = "Night";
String dayAndNight = day + " " + and + " " + night;
}
با اضافه کردن اشیاء کلاس String به اشیاء کلاس های دیگر، دومی را به شکل رشته ای کاهش می دهیم. تبدیل اشیاء کلاس های دیگر به نمایش رشته ای از طریق فراخوانی متد ضمنی toString
روی شی انجام می شود. بیایید این را با مثال زیر نشان دهیم:
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
}
تبدیل یک شی / اولیه به یک رشته
برای تبدیل نمونه ای از هر کلاس جاوا یا هر نوع داده اولیه به نمایش رشته، می توانید از روش زیر استفاده کنید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;
}
}
}
تبدیل رشته به عدد
اغلب شما نیاز دارید که یک رشته را به عدد تبدیل کنید. کلاسهای wrapper نوع اولیه متدهایی دارند که دقیقاً این هدف را دنبال میکنند. همه این روش ها با کلمه 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)
The separator یک عبارت منظم رشته ای است انجام می شود regex
. در مثال زیر عملیاتی بر خلاف آنچه در مثال قبلی انجام دادیم انجام خواهیم داد:
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
*/
}
تعیین موقعیت یک عنصر در یک رشته
در زبان جاوا، 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
, Я
را در الفبای انگلیسی پیدا کنیم، اما به خاطر داشته باشید که نمایه سازی کاراکترهای یک رشته در جاوا از صفر شروع می شود:
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 در جاوا متدهایی را ارائه می دهد: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
}
کار با این کلاس جاوا در سطوح اولیه دوره آنلاین JavaRush مورد مطالعه قرار می گیرد:
- مقدمه ای برای String در سطح 1، سخنرانی 4 از جستجوی دستور زبان جاوا ارائه شده است.
- ساختار داخلی String، روش زیر رشتهای در سطح 2، سخنرانی سوم از جستوجوی Multithreading جاوا مورد مطالعه قرار گرفته است.
- یافتن، دریافت، حذف یک زیر رشته در یک رشته در سطح 2، چهارمین سخنرانی از جست و جوی چند رشته ای جاوا مورد مطالعه قرار گرفته است.
- متد String.format در سطح 2، سخنرانی 6 از جستوجوی Multithreading جاوا پوشش داده شده است.
منابع اضافی
اطلاعات مربوط به کلاس String نیز در مقالات دیگر در انجمن JavaRush ارائه شده است:- رشته ها در جاوا - این مقاله اصول اولیه کار با رشته ها در جاوا را پوشش می دهد.
- رشته جاوا. سوالات و پاسخ های مصاحبه، قسمت 1 - این مقاله به بررسی سوالات مصاحبه در مورد موضوع می پردازد
String
و همچنین پاسخ سوالات را همراه با توضیحات و مثال های کد ارائه می دهد. - رشته ها در جاوا (کلاس java.lang.String) - این مقاله تحلیل عمیق تری از کلاس String ارائه می دهد و همچنین پیچیدگی های کار با این کلاس را مورد بحث قرار می دهد.
GO TO FULL VERSION