1. การสนับสนุนในตัว Java สำหรับสตริง;
การสนับสนุนที่เรียกว่าในตัวหมายความว่าประเภทสตริงจะไม่ถูกนำมาใช้โดยใช้ตัวชี้ถ่านเช่น C และการเข้ารหัสสตริงของ Java สอดคล้องกับมาตรฐานการเข้ารหัส Unicode ซึ่งหมายความว่าไม่จำเป็นต้องใช้ เข้ากันได้กับภาษา C และมาตรฐาน Unicode Java รองรับประเภทสตริงผ่านคลาสสตริงภายใน
ซึ่งหมายความว่า: เราสามารถเรียกใช้วิธีเดียวกันกับวัตถุสตริงได้โดยตรง:
// คุณสามารถเรียกใช้วิธีทั้งหมดของวัตถุสตริงได้โดยตรงบน "ABC"
ความยาว int = "abc" .length ();
เช่นเดียวกับ
string abc = สตริงใหม่ ("abc");
ความยาว int = abc.length ();
2. ค่าสตริงใน Java เป็นค่าคงที่ (คงที่)
สิ่งที่เราหมายถึงที่นี่คือหลังจากที่มีการสร้างประเภทสตริงแล้วค่าไม่สามารถเปลี่ยนแปลงได้ สตริง ("def") "ABC" และ "def" ในพูลคงที่เก็บไว้ในเครื่องเสมือน Java
"ABC" ในรหัสต่อไปนี้จะถูกเก็บไว้ในพูลคงที่ดังนั้นที่อยู่ที่ชี้ไปที่ตัวแปร A และ AB นั้นเหมือนกัน "ABC" ในสระคงที่
การคัดลอกรหัสมีดังนี้:
คลาสสาธารณะ StringTest {
โมฆะคงที่สาธารณะหลัก (สตริง [] args) {
สตริง a = "abc";
String AB = "ABC";
string abc = สตริงใหม่ ("abc");
System.out.println (ab == a);
System.out.println (a == ABC);
-
-
/*เอาต์พุตโปรแกรม:
* จริง
* เท็จ
-
ดังนั้นสตริงที่สร้างขึ้นแบบไดนามิกและตัวแปรได้อย่างไร Java จัดเตรียมคลาส StringBuffer และ StringBuilder เพื่อให้บรรลุข้อกำหนดนี้ StringBuilder และ StringBuffer ถูกนำไปใช้หรือไม่? มันเก็บสตริงผ่านอาร์เรย์ตัวละคร ต่อไปนี้เป็นตัวอย่างที่พบจากซอร์สโค้ดที่มาพร้อมกับ JDK
3. ปัญหาการเข้ารหัสในสตริง
คำถามสองข้อที่ต้องเข้าใจที่นี่: วิธีจัดการกับการเข้ารหัสสตริงในไฟล์ต้นฉบับ? สตริงการเข้ารหัสแบบใดที่ใช้ในการรวบรวมไฟล์คลาสหรือรหัสทำงานใน Java Virtual Machine
ปัญหาแรกคือการเข้ารหัสสตริงในซอร์สโค้ดขึ้นอยู่กับ IDE หรือตัวแก้ไขข้อความของคุณ ตัวอย่างเช่นรหัสต่อไปนี้ได้รับการแก้ไขในรูปแบบการเข้ารหัส GBK จากนั้นเปิดโดยใช้การถอดรหัส UTF-8 และ GBK
// รูปแบบการเข้ารหัส GBK เปิดในรูปแบบ GBK
// รูปแบบการเข้ารหัส GBK เปิดในรูปแบบ UTF-8, อ่านไม่ออก
ดังนั้นจะจัดการกับปัญหาการเข้ารหัสซอร์สโค้ดประเภทนี้ได้อย่างไร? คำตอบที่ระบุไว้ในตัวเลือกพารามิเตอร์ -การเข้ารหัสของคอมไพเลอร์ Javac การเข้ารหัสเริ่มต้นของ Windows โดยทั่วไปคือ GBK (ค่านี้สามารถรับได้ผ่าน System.getProperty ("file.encoding")); ใช้ JAVAC -ENCODING UTF- 8 Compile
การเข้ารหัสของสตริงคืออะไรเมื่อรวบรวมเป็นไฟล์คลาสหรือรหัสเมื่อเรียกใช้เครื่องเสมือน Java? การเข้ารหัสซอร์สโค้ดเป็นอย่างไร ซึ่งหมายความว่าตราบใดที่คอมไพเลอร์ Javac เข้าใจการเข้ารหัสสตริงอย่างถูกต้องในไฟล์ซอร์สโค้ดสตริงในไฟล์รันไทม์หรือไฟล์ไบต์แบบคลาสนั้นเป็นอิสระจากรูปแบบการเข้ารหัสในซอร์สโค้ด ที่นี่เราสามารถเข้าใจประเภทถ่านหรือคลาสอักขระพื้นฐานใน Java '1'THE ความยาวของตัวละครหรือตัวละครจีนใน Java คือ 16 บิต
นอกจากนี้ในประเภทสตริงเรายังใช้การเข้ารหัสอักขระคงที่ที่ระบุเพื่อแปลงการแสดงไบนารีและสตริงซึ่งหมายความว่าเราสามารถอ่านการเข้ารหัส GBK การเข้ารหัส UTF-8 หรือไฟล์ข้อความที่เข้ารหัสอื่น ๆ มันเป็นสตริงที่ถูกต้องในหน่วยความจำ
ตัวอย่างเช่นมีวิธีการต่อไปนี้ในคลาสสตริง:
สตริงสาธารณะ (ไบต์ [] ไบต์, charset charset);
ไบต์สาธารณะ [] getBytes (charset charset);
มีวิธีการสมาชิกอื่นที่ต้องให้ความสนใจกับ:
ไบต์สาธารณะ [] getBytes ();