1. إنشاء الكائنات
بالنسبة لثوابت السلسلة المباشرة في برامج Java، سيستخدم JVM تجمع سلسلة لحفظها. عند استخدام ثابت سلسلة مباشر لأول مرة، سيضعه JVM في تجمع السلسلة للتخزين المؤقت. في الظروف العادية، لن يتم تجميع كائنات السلسلة الموجودة في تجمع السلسلة. عندما يحتاج البرنامج إلى استخدام السلسلة مرة أخرى، يمكن للمتغير المرجعي أن يشير مباشرة إلى السلسلة الموجودة في السلسلة دون إعادة إنشاء سلسلة جديدة. لا يشير كائن السلسلة الذي تم إنشاؤه باستخدام العملية الجديدة إلى الكائن الموجود في تجمع السلسلة ، ولكن يمكنك استخدام الأسلوب intern() لتوجيهه إلى الكائن الموجود في تجمع السلسلة.
انسخ رمز الكود كما يلي:
فئة عامة StringDemo1 {
public static void main(String[] args){
سلسلة str1 = "abc"؛
سلسلة str2 = "اي بي سي"؛
String str3 =new String("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
}
}
التعليمات
انسخ رمز الكود كما يلي:
String str3 =new String("abc");
كم عدد الكائنات التي تم إنشاؤها؟
الجواب: اثنان
انسخ رمز الكود كما يلي:
سلسلة str = "ab"+"cd"؛
كم عدد الكائنات التي تم إنشاؤها؟ الجواب: واحد. "ab" و"cd" هما ثوابت موضوعة في تجمع السلاسل. لذلك، يتم إنشاء تجمع سلسلة ABCD واحد فقط ويتم حفظ السلسلة ABCD في تجمع السلسلة.
انسخ رمز الكود كما يلي:
فئة عامة StringDemo1 {
public static void main(String[] args){
سلسلة str1 = "أب"؛
سلسلة str2 = "مؤتمر نزع السلاح"؛
String str3 ="ab"+"cd";// أنشئ الكائن وأضفه إلى تجمع السلاسل
سلسلة str4 =str1+str2؛
سلسلة str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
يمكن رؤيته من الكود أعلاه: يمكن فقط إضافة كائنات السلسلة التي تم إنشاؤها باستخدام علامات الاقتباس التي تحتوي على نص إلى تجمع السلسلة. بالنسبة لتعبير الاتصال "+" الذي يحتوي على الكائن الجديد الذي تم إنشاؤه بواسطة الطريقة الجديدة، سيتم إضافة الكائن الجديد الذي تم إنشاؤه به لا يمكن إضافتها إلى السلسلة في المجمع.
ولكن هناك موقف يحتاج إلى اهتمامنا:
انسخ رمز الكود كما يلي:
فئة عامة StringDemo1 {
سلسلة ثابتة نهائية خاصة str1 = "ab";
سلسلة ثابتة نهائية خاصة str2 = "cd";
public static void main(String[] args){
String str3 ="ab"+"cd";// أنشئ الكائن وأضفه إلى تجمع السلاسل
سلسلة str4 =str1+str2؛
سلسلة str5 =str1+"cd";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
}
}
لماذا هذا؟ والسبب هو هذا، للثوابت. قيمته ثابتة وبالتالي يمكن تحديدها في وقت الترجمة.
قم بتغيير الكود أعلاه قليلاً وشاهد ما سيحدث.
انسخ رمز الكود كما يلي:
فئة عامة StringDemo1 {
سلسلة ثابتة نهائية خاصة str1؛
سلسلة ثابتة نهائية خاصة str2؛
ثابت {
str1 = "أب"؛
str2 = "قرص مضغوط" ؛
}
public static void main(String[] args){
String str3 ="ab"+"cd";// أنشئ الكائن وأضفه إلى تجمع السلاسل
سلسلة str4 =str1+str2؛
سلسلة str5 =str1+"cd";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
}
}
على الرغم من تعريف str1 وstr2 كثوابت، إلا أنه يتم تعيين قيم لهما على الفور قبل حساب قيمة s، ومتى يتم تعيينهما والقيمة المخصصة لهما هي متغيرات، وبالتالي فإن خصائصهما هي نفس المتغيرات. لا يمكن إنشاؤها إلا في وقت التشغيل.
2. طريقة السلسلة
احصل على الطريقة
• طول كثافة العمليات ()
•char charAt(int Index) يحصل على حرف بناءً على الموضع
•int IndexOf(int ch) يُرجع موضع التواجد الأول للـ ch في السلسلة
يبدأ •int IndexOf(int ch,int fromIndex) من الموضع المحدد بواسطة fromIndex ويحصل على موضع التواجد الأول لـ ch في السلسلة.
•int فهرس (سلسلة سلسلة)
•int فهرس (سلسلة str،int fromIndex)
•int lastIndexOf(int ch)
طريقة الحكم
•boolean يحتوي على(String str) طريقة حكم أخرى: if(str.index(str)!=-1)
•يبدأ منطقيًا بـ(String str)
• نهايات منطقية مع (سلسلة نصية)
•bolean isEmpty(String str)
• قيمة منطقية (سلسلة نصية)
•booleanequalsIgnoreCase(String str);
طريقة التحويل
• تحويل مجموعة الأحرف إلى سلسلة
منشئ
1.سلسلة (شار [] chs)
2.String(char[] chs,offset,count) يحول جزءًا من مصفوفة الأحرف إلى سلسلة.
طريقة ثابتة
1. سلسلة ثابتة CopyValueOf (char[] chs)
2. سلسلة ثابتة CopyValueOf(char[] chs,int offset,int count)
3. قيمة السلسلة الثابتة (char[])
4. قيمة السلسلة الثابتة (char[] chs,int offset,int count)
• تحويل سلسلة إلى مجموعة أحرف
شار[] إلىCharArray
• تحويل مجموعة الأحرف إلى سلسلة
• تحويل السلسلة إلى مجموعة بايت
بايت[] إلى بايت
طريقة الاستبدال
استبدال السلسلة (olderStr، newStr)
طريقة القطع
تقسيم السلسلة (التعبير العادي)
الحصول على سلسلة فرعية[عدل الفئة]
سلسلة فرعية (تبدأ)
String subString(begin,end) تحتوي على الرأس وليس الذيل
تحويل السلسلة إلى أحرف كبيرة وأحرف صغيرة Android(10)
سلسلة إلىUpperCase ()
سلسلة إلىLowerCase()
إزالة المسافات من طرفي السلسلة
قطع السلسلة ()
قارن بين سلسلتين بالترتيب الطبيعي
كثافة العمليات مقارنة إلى (سلسلة سلسلة)
3. تمارين السلسلة
1. تقليب السلسلة
انسخ رمز الكود كما يلي:
فئة عامة StringDemo2 {
public static void main(String[] args){
String str = "avdkfasjks";
reverseMethod_1(str);
}
عكس الفراغ الثابت العام_1 (سلسلة str) {
for(int i=str. length();i>0;i--){
System.out.print(str.charAt(i-1));
}
}
}
2. احصل على أكبر سلسلة فرعية متطابقة
انسخ رمز الكود كما يلي:
فئة عامة StringDemo2 {
public static void main(String[] args){
String str1 = "avdkfasjks";
String str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
}
سلسلة ثابتة عامة commonMaxSubstring(String str1,String str2){
int len = str1.length();
سلسلة str3 = فارغة؛
الخارجي:
//i هو طول السلسلة الفرعية
ل(int i = لين;i>0;i--){
// j هي السلسلة الفرعية للسلسلة الفرعية
for(int j=0;j<len-i+1;j++){
str3=str1.substring(j,j+i);
إذا (str2.contains (str3))
كسر الخارجي.
}
}
عودة str3؛
}
}