String เป็นคลาส immutable ใน Java ใน Java 9 เพิ่มเมธอดใหม่ 2 ตัวคือ chars() และ codePoints() ทั้งคู่คืนค่า IntStream object
1) chars()
เมธอด chars() ของคลาส String คืนสตรีมของ int ที่ zero-extend ค่า char จาก sequence นี้
ไวยากรณ์
public IntStream chars()
ตัวอย่าง
import java.util.stream.IntStream;
public class StringCharsMethodTest {
public static void main(String args[]) {
String str = "Welcome to TutorialsPoint";
IntStream intStream = str.chars();
intStream.forEach(x -> System.out.printf("-%s", (char)x));
}
}
ผลลัพธ์
-W-e-l-c-o-m-e- -t-o- -T-u-t-o-r-i-a-l-s-P-o-i-n-t
2) codePoints()
เมธอด codePoints() คืนสตรีมของค่า code point จาก sequence นี้
ไวยากรณ์
public IntStream codePoints()
ตัวอย่าง
import java.util.stream.IntStream;
public class StringCodePointsMethodTest {
public static void main(String args[]) {
String str = "Welcome to Tutorix";
IntStream intStream = str.codePoints();
intStream.forEach(x -> System.out.print(new StringBuilder().appendCodePoint(x)));
}
}
ผลลัพธ์
Welcome to Tutorix
ความแตกต่างระหว่าง chars() และ codePoints()
| เมธอด | คืนค่า | เหมาะสำหรับ |
|---|---|---|
| chars() | IntStream ของ char values (16-bit) | BMP characters (Basic Multilingual Plane) |
| codePoints() | IntStream ของ Unicode code points (32-bit) | ทุก Unicode รวม supplementary characters |
สำหรับข้อความภาษาไทยหรือ emoji ควรใช้ codePoints() เพื่อความถูกต้อง