String ใช้เก็บลำดับตัวอักษรใน Java ถูกจัดการเป็นอ็อบเจกต์ คลาส String ของแพ็กเกจ java.lang แทน String
คุณสามารถสร้าง String ได้สองวิธี คือ ใช้คียเวิร์ด new (เหมือนอ็อบเจกต์ทั่วไป) หรือ กำหนดค่าให้ literal (เหมือน primitive datatype)
String stringObject = new String("Hello how are you");
String stringLiteral = "Welcome to Tutorialspoint";
เนื่องจาก String เก็บอาร์เรย์ของตัวอักษร คล้ายกับอาร์เรย์ ตำแหน่งของแต่ละตัวอักษร แทนด้วยดัชนี (index) เริ่มจาก 0 ตัวอย่างเช่น ถ้าสร้าง String ว่า −
String str = "Hello";
ตัวอักษรจะอยู่ตำแหน่งดังนี้ −

หากคุณพยายามเข้าถึงตัวอักษรของ String ที่ดัชนีซึ่งมากกว่าความยาว จะเกิด StringIndexOutOfBoundsException
ตัวอย่าง
คลาส String ใน Java มีเมธอดต่างๆ สำหรับจัดการ String คุณสามารถหาตัวอักษรที่ดัชนีเฉพาะได้ด้วยเมธอด charAt() ของคลาสนี้
เมธอดนี้รับค่า integer ระบุดัชนีของ String และคืนค่าตัวอักษรใน String ที่ดัชนีที่ระบุ
ในโปรแกรม Java ต่อไปนี้ เราสร้าง String ความยาว 17 และพยายามพิมพ์องค์ประกอบที่ดัชนี 40
public class Test {
public static void main(String[] args) {
String str = "Hello how are you";
System.out.println("Length of the String: " + str.length());
for(int i = 0; i < str.length(); i++) {
System.out.println(str.charAt(i));
}
// เข้าถึงองค์ประกอบที่มากกว่าความยาวของ String
System.out.println(str.charAt(40));
}
}
ผลลัพธ์
Run time exception −
เนื่องจากเราเข้าถึงองค์ประกอบที่ดัชนีมากกว่าความยาว StringIndexOutOfBoundsException ถูกโยน
Length of the String: 17
H
e
l
l
o
h
o
w
a
r
e
y
o
u
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: 40
at java.base/java.lang.StringLatin1.charAt(Unknown Source)
at java.base/java.lang.String.charAt(Unknown Source)
at Test.main(Test.java:9)