1. Cấu trúc lớp Stringhọc

Hôm nay chúng ta sẽ nói về Stringlớp học. Sau int, lớp String là lớp phổ biến nhất trong Java. Nó được sử dụng hoàn toàn ở mọi nơi. Nó có một loạt các phương pháp hữu ích mà bạn nên biết.

Lớp này Stringlà lớp duy nhất ngoài các kiểu nguyên thủy có thể sử dụng nghĩa đen trong một switchcâu lệnh; trình biên dịch xử lý việc thêm chuỗi và các đối tượng Chuỗi theo một cách đặc biệt; Stringcác đối tượng được lưu trữ trong bộ nhớ theo một cách đặc biệt. Về cơ bản, Stringlớp là một lớp rất đặc biệt.

Ngoài ra, Stringlớp này có một loạt các lớp trợ giúp với mục đích đơn giản hóa hơn nữa việc làm việc với các chuỗi trong Java. Khi bạn học được tất cả những điều này, nhiều điều sẽ thực sự trở nên dễ dàng hơn nhiều đối với bạn. Chà, chúng ta sẽ bắt đầu từ cốt lõi của hệ sinh thái này — tổ chức lớp Stringhọc.

Mảng ký tự

Cấu trúc của Stringclass thực ra rất đơn giản: bên trong nó là một mảng ký tự (char array) lưu tất cả các ký tự của chuỗi. Ví dụ: đây là cách lưu trữ từ 'Xin chào':

Cấu trúc của lớp String
Quan trọng!

Trên thực tế, điều này không hoàn toàn chính xác. Bởi vì Stringlớp này rất quan trọng nên nó sử dụng rất nhiều tối ưu hóa và dữ liệu được lưu trữ bên trong không phải dưới dạng mảng ký tự mà chỉ đơn giản là dưới dạng mảng byte.


2. Phương thức của Stringlớp học

Lớp này Stringcó rất nhiều phương thức: riêng nó đã có 18 hàm tạo! Vì vậy, dưới đây chúng tôi chỉ đề cập đến những điều cơ bản nhất trong số đó:

phương pháp Sự miêu tả
int length()
Trả về số ký tự trong chuỗi
boolean isEmpty()
Kiểm tra xem chuỗi có phải là chuỗi rỗng không
boolean isBlank()
Kiểm tra xem chuỗi chỉ chứa các ký tự khoảng trắng: dấu cách, tab, dòng mới, v.v.
char charAt(int index)
Trả về ký tự tại vị trí chỉ mục trong chuỗi.
char[] toCharArray()
Trả về một mảng các ký tự (bản sao) tạo thành chuỗi
byte[] getBytes()
Chuyển đổi một chuỗi thành một tập hợp byte và trả về mảng byte.
String[] split(String regex)
Tách một chuỗi thành nhiều chuỗi con.
String join(CharSequence delimiter, elements)
Nối nhiều chuỗi con lại với nhau
String intern()
Đặt một chuỗi vào string pool.

Bạn có thể tìm hiểu thêm về hàm tạo trong bài viết Trình tạo Java .

Hãy viết chương trình chuyển đổi đường dẫn tệp từ kiểu Unix sang kiểu Windows. Unix sử dụng /ký tự để phân tách các thư mục, trong khi Windows sử dụng \ký tự này.

Giải pháp 1: sử dụng mảng char

Mã số ghi chú
Scanner console = new Scanner(System.in);
String path = console.nextLine();

char[] chars = path.toCharArray();
for (int i = 0; i < chars.length; i++)
   if (chars[i] == '/')
      chars[i] = '\\';

String result = new String(chars);
System.out.println(result);
Tạo một đối tượng Máy quét
Đọc một dòng từ bàn điều khiển

Chuyển đổi một chuỗi thành một mảng ký tự
Lặp lại các ký tự
Nếu ký tự là /,
hãy thay thế nó bằng ký tự \. Đừng quên về việc trốn thoát.

Tạo một chuỗi mới dựa trên mảng ký tự.
Hiển thị chuỗi.

Giải pháp 2: — sử dụng phương pháp split()join()

Mã số ghi chú
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String[] array = path.split("/");


String result = String.join("\\", array);


System.out.println(result);
Tạo một đối tượng Scanner
Đọc một dòng từ bàn điều khiển

Chuyển đổi chuỗi thành một mảng chuỗi . Ký /tự được sử dụng làm dấu phân cách (hai dấu gạch chéo thừa là kết quả của việc thoát kép).
Nối tất cả các chuỗi trong mảng chuỗi . The \được sử dụng làm dấu phân cách (chúng tôi thấy nó đã thoát).

Hiển thị chuỗi.

Giải pháp 3: — sử dụng replace(char oldChar, char newChar)phương pháp

Mã số ghi chú
Scanner console = new Scanner(System.in);
String path = console.nextLine();

String result = path.replace('/', '\\');

System.out.println(result);
Tạo một đối tượng Máy quét
Đọc một dòng từ bàn điều khiển

Chỉ cần thay thế một ký tự bằng một ký tự khác
(ký tự thứ hai được thoát ra)
Hiển thị chuỗi.