Java Cơ Bản Bài 7: Chuỗi Trong Java
Kiểu chuỗi (String) là kiểu dữ liệu quan trọng với các lập trình viên. Tuy nhiên, với mỗi ngôn ngữ lập trình, cách hiện thực hóa kiểu chuỗi có một vài điểm khác nhau. Trong bài viết này, xin được giới thiệu về kiểu chuỗi và kỹ thuật thao tác với chuỗi trong ngôn ngữ lập trình Java.
Ví dụ: String s = "xinchao";
Ghi chú: Các đối tượng String được lưu trữ trong một khu vực bộ nhớ đặc biệt gọi là String Constant Pool.
Theo mặc định thì Java không lưu trữ tất cả đối tượng String vào String Pool. Thay vào đó, họ cung cấp một cách thức linh hoạt cho việc lưu trữ bất kỳ một đối tượng nào trong String Pool, sử dụng phương thức intern() để lưu trữ mọi object bất kỳ vào String pool. Khi sử dụng String literal thì mặc định nó sẽ gọi phương thức intern() để làm việc này giúp bạn. Đây chính là điểm khác biệt lớn nhất giữa String literal và sử dụng new.
Mỗi khi bạn tạo một hằng chuỗi, đầu tiên JVM kiểm tra Pool chứa các hằng chuỗi. Nếu chuỗi đã tồn tại trong Pool, một tham chiếu tới Pool được trả về. Nếu chuỗi không tồn tại trong Pool, một instance của chuỗi mới được tạo và được đặt trong Pool
Khai báo và khởi tạo
1. Sử dụng String LiteralVí dụ: String s = "xinchao";
Ghi chú: Các đối tượng String được lưu trữ trong một khu vực bộ nhớ đặc biệt gọi là String Constant Pool.
Theo mặc định thì Java không lưu trữ tất cả đối tượng String vào String Pool. Thay vào đó, họ cung cấp một cách thức linh hoạt cho việc lưu trữ bất kỳ một đối tượng nào trong String Pool, sử dụng phương thức intern() để lưu trữ mọi object bất kỳ vào String pool. Khi sử dụng String literal thì mặc định nó sẽ gọi phương thức intern() để làm việc này giúp bạn. Đây chính là điểm khác biệt lớn nhất giữa String literal và sử dụng new.
Mỗi khi bạn tạo một hằng chuỗi, đầu tiên JVM kiểm tra Pool chứa các hằng chuỗi. Nếu chuỗi đã tồn tại trong Pool, một tham chiếu tới Pool được trả về. Nếu chuỗi không tồn tại trong Pool, một instance của chuỗi mới được tạo và được đặt trong Pool
2.Sử dụng từ khóa New
JVM sẽ tạo một đối tượng mới như bình thường trong bộ nhớ Heap (không phải Pool). Biến sẽ tham chiếu tới đối tượng trong Heap (chứ không là Pool).
Khai báo một xâu rỗng:
Ví dụ: String str1 = new String( ); //khởi tạo str1 là một xâu trống
Khai báo và khởi tạo một xâu bằng một chuỗi cho trước.
Ví dụ: String str2 = new String(Hello world); //khởi tạo str2 bằng Hello word
Khai báo và khởi tạo một xâu bằng một mảng kí tự cho trước.
Ví dụ: char ch[ ]={a,b,c,d,e};
String str3= new String[ch];
Kết quả str3 là xâu "abdce".
Khai báo và khởi tạo một xâu bằng cách chọn một vài kí tự trong một mảng kí tự cho trước.
Ví dụ: char ch[ ] = {a,b,c,d,e};
String str4 = new String[ch,0,2];
Kết quả str4 là xâu "ab" , vì khởi tạo này sẽ khởi tạo xâu str4 là lấy 2 kí tự từ vị trí thứ 0.
Ví dụ: String str1 = new String("Hello world");
System.out.printf("toi muon noi " +str1);
Kết quả của đoạn mã trên sẽ in ra dong chữ: toi muon noi Hello world
Nối 2 chuỗi bằng phương thức concat( )
Ví dụ: String str1 = new String( ); //khởi tạo str1 là một xâu trống
Khai báo và khởi tạo một xâu bằng một chuỗi cho trước.
Ví dụ: String str2 = new String(Hello world); //khởi tạo str2 bằng Hello word
Khai báo và khởi tạo một xâu bằng một mảng kí tự cho trước.
Ví dụ: char ch[ ]={a,b,c,d,e};
String str3= new String[ch];
Kết quả str3 là xâu "abdce".
Khai báo và khởi tạo một xâu bằng cách chọn một vài kí tự trong một mảng kí tự cho trước.
Ví dụ: char ch[ ] = {a,b,c,d,e};
String str4 = new String[ch,0,2];
Kết quả str4 là xâu "ab" , vì khởi tạo này sẽ khởi tạo xâu str4 là lấy 2 kí tự từ vị trí thứ 0.
Nối chuỗi
Nối chuỗi bằng dấu cộngVí dụ: String str1 = new String("Hello world");
System.out.printf("toi muon noi " +str1);
Kết quả của đoạn mã trên sẽ in ra dong chữ: toi muon noi Hello world
Nối 2 chuỗi bằng phương thức concat( )
Khác với việc nối chuỗi bằng dấu cộng là nối 2 chuỗi tại vị trí cuối cùng của chuỗi đầu tiên.thay vào đó phương thức này sẽ trả về một chuỗi mới.
Ví dụ: String str1,str2,str3;
str1="Welcome to";
str2="hocngay.blogspot.com";
str3=str1.concat(str2);
Kết quả là str3 sẽ bằng "Welcome to hocngay.blogspot.com".
Ví dụ: String str1,str2,str3;
str1="Welcome to";
str2="hocngay.blogspot.com";
str3=str1.concat(str2);
Kết quả là str3 sẽ bằng "Welcome to hocngay.blogspot.com".
Một số hàm thông dụng
STT
|
Nguyên mẫu hàm
|
Chức năng
|
1
|
public char charAt(int s); | Trả về kí tự có chỉ số là i trong chuỗi cần tìm. |
2
|
public String concat(String s2); | Trả về chuỗi đã được nối thêm vào chuỗi s2. s2 sẽ được nối vào sau chuỗi gọi hàm. |
3
|
public boolean equals(String s2); | Trả về true nếu giá trị của chuỗi s2 bằng giá trị chuỗi đang xét, trả về false nếu ngược lại. Phân biệt chữ hoa và chữ thường trong khi so sánh. |
4
|
public boolean equalsIgnoreCase(String s2); | Trả về true nếu giá trị của chuỗi s2 bằng giá trị chuỗi đang xét, trả về false nếu ngược lại. KHÔNG phân biệt chữ hoa và chữ thường trong khi so sánh. |
5
|
public int length(); | Trả về độ dài của chuỗi đang xét. |
6
|
public String replace(char oldChar, char newChar); | Thay thế kí tự oldChar bằng kí tự newChar. |
7
|
public String substring(int begin); public String substring(int begin); |
Lấy ra chuỗi con từ vị trí begin đến hết chuỗi, hoặc từ vị trí begin đến vị trí end. |
8
|
public int indexOf(String str); | Kiểm tra sự tồn tại của chuỗi str trong chuỗi đang xét. Nếu có, trả về vị trí đầu tiên của sự xuất hiện. Nếu không trả về -1. |
9
|
public String toUpperCase(); | Chuyển tất cả kí tự trong chuỗi đang xét thành kí tự hoa. |
10
|
public String toLowerCase(); | Chuyển tất cả kí tự trong chuỗi đang xét thành kí tự thường. |
11
|
public String toString(); | Trả về giá trị của chuỗi đang xét. Trong một vài trường hợp, bạn có thể override lại để sử dụng đúng mục đích. |
12
|
public String trim(); | Trả về chuỗi đã được loại bỏ khoảng trắng. |
Post a Comment