1. สร้างวัตถุ
สำหรับ ค่าคงที่สตริงโดยตรง ในโปรแกรม Java JVM จะใช้พูลสตริงเพื่อบันทึก เมื่อใช้ค่าคงที่โดยตรงของสตริงเป็นครั้งแรก JVM จะใส่ลงในพูลสตริงสำหรับการแคช ภายใต้สถานการณ์ปกติ วัตถุสตริงในพูลสตริงจะไม่ถูกรวบรวมขยะ เมื่อโปรแกรมจำเป็นต้องใช้สตริงอีกครั้ง ตัวแปรอ้างอิงสามารถชี้ไปที่สตริงที่มีอยู่ในสตริงได้โดยตรง โดยไม่ต้องสร้างสตริงใหม่ใหม่ วัตถุสตริงที่สร้างขึ้นโดยใช้การดำเนินการใหม่ไม่ได้ชี้ไปที่วัตถุในพูลสตริง แต่คุณสามารถใช้เมธอด intern() เพื่อชี้ไปยังวัตถุในพูลสตริงได้
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo1 ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
สตริง str1="abc";
สตริง str2 = "abc";
สตริง str3 = สตริงใหม่ ("abc");
System.out.println(str1==str2);//true
System.out.println(str1==str3);//false
-
-
คำถามที่พบบ่อย
คัดลอกรหัสรหัส ดังต่อไปนี้:
สตริง str3 = สตริงใหม่ ("abc");
สร้างวัตถุมงคลจำนวนเท่าใด?
คำตอบ: สอง
คัดลอกรหัสรหัส ดังต่อไปนี้:
สตริง str = "ab"+"cd";
สร้างวัตถุมงคลจำนวนเท่าใด? คำตอบ: หนึ่ง. "ab" และ "cd" เป็นค่าคงที่ที่อยู่ในพูลสตริง ดังนั้นจึงมีการสร้างพูลสตริง abcd เพียงพูลเดียวเท่านั้น และสตริง abcd จะถูกบันทึกในพูลสตริง
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo1 ระดับสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
สตริง str1 = "ab";
สตริง str2="ซีดี";
String str3 ="ab"+"cd";//สร้างวัตถุและเพิ่มลงในพูลสตริง
สตริง str4 =str1+str2;
สตริง str5 =str1+"ซีดี";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
-
-
สามารถดูได้จากโค้ดด้านบน: เฉพาะวัตถุ String ที่สร้างด้วยเครื่องหมายคำพูดที่มีข้อความเท่านั้นที่สามารถเพิ่มลงในพูลสตริงได้ สำหรับนิพจน์การเชื่อมต่อ "+" ที่มีวัตถุใหม่ที่สร้างขึ้นโดยวิธีการใหม่ วัตถุใหม่ที่สร้างขึ้นโดยมันจะ ไม่ถูกเพิ่มเข้ากับสตริงในพูล
แต่มีสถานการณ์ที่ต้องให้ความสนใจจากเรา:
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo1 ระดับสาธารณะ {
สตริงคงที่สุดท้ายส่วนตัว str1 = "ab";
สตริงคงที่สุดท้ายส่วนตัว str2 = "cd";
โมฆะคงที่สาธารณะ main (String [] args) {
String str3 ="ab"+"cd";//สร้างวัตถุและเพิ่มลงในพูลสตริง
สตริง str4 =str1+str2;
สตริง str5 =str1+"ซีดี";
System.out.println(str3==str4);//true
System.out.println(str3==str5);//true
-
-
ทำไมเป็นเช่นนี้? เหตุผลก็คือสำหรับค่าคงที่ ค่าของมันได้รับการแก้ไขแล้วจึงสามารถกำหนดได้ในเวลาคอมไพล์
เปลี่ยนโค้ดด้านบนเล็กน้อยแล้วดูว่าเกิดอะไรขึ้น
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo1 ระดับสาธารณะ {
สตริงคงที่สุดท้ายส่วนตัว str1;
สตริงคงที่สุดท้ายส่วนตัว str2;
คงที่{
str1="ab";
str2="ซีดี";
-
โมฆะคงที่สาธารณะ main (String [] args) {
String str3 ="ab"+"cd";//สร้างวัตถุและเพิ่มลงในพูลสตริง
สตริง str4 =str1+str2;
สตริง str5 =str1+"ซีดี";
System.out.println(str3==str4);//false
System.out.println(str3==str5);//false
-
-
แม้ว่า str1 และ str2 จะถูกกำหนดให้เป็นค่าคงที่ แต่ค่าเหล่านี้จะถูกกำหนดค่าทันที ก่อนที่จะคำนวณค่า s เมื่อมีการกำหนดค่าและค่าที่กำหนดจะเป็นตัวแปร ดังนั้นคุณสมบัติของตัวแปรจึงเหมือนกับตัวแปร สามารถสร้างได้เฉพาะตอนรันไทม์เท่านั้น
2. วิธีสตริง
รับวิธีการ
•ความยาว int()
•char charAt(int index) รับอักขระตามตำแหน่ง
•int indexOf(int ch) ส่งกลับตำแหน่งของการเกิดขึ้นครั้งแรกของ ch ในสตริง
•int indexOf(int ch,int fromIndex) เริ่มจากตำแหน่งที่ระบุโดย fromIndex และรับตำแหน่งของ ch ที่เกิดขึ้นครั้งแรกในสตริง
•int indexOf (สตริง str)
•int indexOf(สตริง str,int fromIndex)
•int LastIndexOf(int ch)
วิธีการตัดสิน
•boolean contains(String str) วิธีการตัดสินอื่น: if(str.index(str)!=-1)
•บูลีน startWith (String str)
•สิ้นสุดบูลีนด้วย (String str)
•bolean isEmpty(String str)
•บูลีนเท่ากับ (String str)
•บูลีนเท่ากับ IgnoreCase(String str);
วิธีการแปลง
•แปลงอาร์เรย์อักขระเป็นสตริง
ตัวสร้าง
1.String(ถ่าน[] chs)
2.String(char[] chs,offset,count) แปลงส่วนหนึ่งของอาร์เรย์อักขระให้เป็นสตริง
วิธีการคงที่
1.copyValueOf สตริงคงที่ (ถ่าน [] chs)
2.static String copyValueOf (ถ่าน [] chs, int offset, int count)
3.ค่าสตริงคงที่ของ (ถ่าน [])
4.ค่าสตริงคงที่ของ (ถ่าน [] chs, int offset, int count)
• แปลงสตริงให้เป็นอาร์เรย์อักขระ
ถ่าน [] ถึง CharArray
•แปลงอาร์เรย์อักขระเป็นสตริง
•แปลงสตริงเป็นอาร์เรย์ไบต์
ไบต์[] ถึงไบต์
วิธีการทดแทน
แทนที่สตริง (olderStr, newStr)
วิธีการตัด
การแยกสตริง (regex)
รับสตริงย่อย[แก้ไขหมวดหมู่]
สตริงย่อย (เริ่มต้น)
String subString(begin,end) มีส่วนหัวแต่ไม่มีส่วนท้าย
แปลงสตริงเป็นตัวพิมพ์ใหญ่และตัวพิมพ์เล็ก Android (10)
สตริงเป็นUpperCase()
สตริงเป็น LowerCase()
ลบช่องว่างออกจากปลายทั้งสองของสตริง
การตัดแต่งสตริง()
เปรียบเทียบสองสายตามลำดับตามธรรมชาติ
int comparisonTo (สตริง str)
3. การออกกำลังกายแบบสตริง
1. การพลิกสาย
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo2 คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
สตริง str = "avdkfasjks";
ReverseMethod_1(str);
-
โมฆะคงสาธารณะ ReverseMethod_1 (String str) {
สำหรับ(int i=str.length();i>0;i--){
System.out.print(str.charAt(i-1));
-
-
-
2. รับสตริงย่อยที่เหมือนกันที่ใหญ่ที่สุด
คัดลอกรหัสรหัส ดังต่อไปนี้:
StringDemo2 คลาสสาธารณะ {
โมฆะคงที่สาธารณะ main (String [] args) {
สตริง str1 = "avdkfasjks";
สตริง str2 = "ewavdrtte";
System.out.println(commonMaxSubstring(str1, str2));
-
สตริงสาธารณะคง commonMaxSubstring (สตริง str1, สตริง str2) {
int len = str1.length();
สตริง str3 = null;
ภายนอก:
//i คือความยาวของสตริงย่อย
สำหรับ(int i = len;i>0;i--){
//j เป็นสตริงย่อยของสตริงย่อย
สำหรับ(int j=0;j<len-i+1;j++){
str3=str1.substring(เจ,เจ+ฉัน);
ถ้า(str2.มี(str3))
แตกนอก;
-
-
กลับ str3;
-
-