- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java
Bài 21: String trong Java - Lập trình Java cơ bản
Đăng bởi: Admin | Lượt xem: 4158 | Chuyên mục: Java
Chuỗi (String) trong Java cung cấp nhiều khái niệm đa dạng giúp bạn thao tác và xử lý với chuỗi như so sánh, cắt, nối, tìm độ dài, thay thế, tìm chuỗi con, …. Trong Java, về cơ bản chuỗi là một đối tượng mà biểu diễn dãy các giá trị char. Một mảng các ký tự làm việc khá giống như chuỗi trong Java.
1. Cách khai báo
Lớp String cung cấp hàng loạt các phương thức để thao tác với các chuỗi. Nó cung cấp các phương thức khởi tạo (constructor) khác nhau. Dưới đây là 2 phương thức được dùng thường xuyên nhất:
Cách 1: Sử dụng String Literal
String literal được tạo ra bằng cách sử dụng 2 dấu nháy kép.
Ví dụ
String str = "BkitSoftware"
Mỗi khi bạo tạo một biến string literal, đầu tiên JVM sẽ kiểm tra xem giá trị đó đã tồn tại trong 1 nơi gọi là String Pool chưa. Nếu chuỗi này đã tồn tại trong Pool, thì giá trị của biến sẽ được tham chiếu đến instance đã được tạo ra trong Pool. Nếu chuỗi này không tồn tại trong Pool, một instance mới được tạo ra và đặt vào trong Pool.
Ví dụ:
String str1 = "BkitSoftware"
String str2 = "BkitSoftware"// sẽ không tạo ra instance mới
Bằng cách khai báo này, chương trình sẽ hiệu quả hơn trong việc sử dụng bộ nhớ bởi vì không có đối tượng mới nào được tạo khi mà nếu nó đã tồn tại trong Pool.
Cách 2: Sử dụng từ khóa new
Trong trường hợp này, 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) và hằng "xinchao" sẽ được đặt trong Pool. Biến sẽ tham chiếu tới đối tượng trong Heap (chứ không là Pool).
Ví dụ:
String s=new String("BkitSoftware");
Khai báo bằng cách này sẽ nhanh hơn so với cách thứ nhất vì không mất thời gian truy nhập vào String Pool mà tạo trực tiếp một ô nhớ mới trong bộ nhớ Heap. Tuy nhiên, do đó sẽ dẫn đến việc dư thừa ô nhớ.
2. So sánh 2 chuỗi
Chúng ta có thể so sánh chuỗi trong Java dựa trên cơ sở nội dung và tham chiếu. Nó được sử dụng trong sự xác nhận bởi phương thức equal(), sắp xếp bởi phương thức compareTo(), so khớp tham chiếu bởi toán tử ==, …
Cách 1: Sử dụng phương thức equal(), được sử dụng để so sánh nội dung của 2 chuỗi. Lớp String cung cấp 2 phương thức equals():
- equal(): so sánh 2 chuỗi có phân biệt chữ hoa, chữ thường.
- equalsIgnoreCase(): so sánh 2 chuỗi nhưng không phân biệt chữ hoa, chữ thường.
Ví dụ:
package com.company;
public class Main {
public static void main(String args[]) {
String str1 = "BkitSoftware";
String str2 = new String("Bkitsoftware");
System.out.println(str1.equals(str2));
System.out.println(str1.equalsIgnoreCase(str2));
}
}
false
true
Cách 2: Sử dụng toán tử "=="
Toán tử == được sử dụng để so sánh tham chiếu (không phải giá trị) của 2 chuỗi.
Ví dụ:
package com.company;
public class Main {
public static void main(String args[]) {
String str1 = "BkitSoftware";
String str2 = str1;
String str3 = new String("BkitSoftware");
System.out.println(str1==str2);
System.out.println(str1==str3);
}
}
true// Do str1 và str2 cùng tham chiếu tới 1 instance
false// Do str1 và str3 tham chiếu tới 2 instance khác nhau
Cách 3: Sử dụng phương thức compareTo()
Phương thức compareTo () so sánh các giá trị theo thứ tự từ điển và trả về một giá trị số nguyên mô tả nếu chuỗi đầu tiên nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai.
Giả sử s1 và s2 là hai biến chuỗi. Nếu:
- s1 == s2 : 0
- s1 > s2 : giá trị > 0
- s1 < s2 : giá trị < 0
Ví dụ:
package com.company;
public class Main {
public static void main(String args[]) {
String str1 = "BkitSoftware";
String str2 = str1;
String str3 = new String("Code");
System.out.println(str1.compareTo(str2));
System.out.println(str1.compareTo(str3));
}
}
0
-1
3. Các phương thức lớp String
Giả sử ta thao tác các lệnh trên chuỗi str="BkitSoftware"
Phương thức | Mô tả | Ví dụ |
---|---|---|
chatAt() | trả về giá trị Char của chuỗi tại vị trí có chỉ số index được chỉ định được chỉ định, bắt đầu từ 0 | str.charAt(0) sẽ trả về 'B' |
compareTo() | so sánh các chuỗi cho trước với chuỗi hiện tại theo thứ tự từ điển. Nó trả về số dương, số âm hoặc 0. | Đã ví dụ ở phần so sánh |
concat() | nối thêm chuỗi được chỉ định vào cuối chuỗi đã cho. | str = str.concat(" Company") str sẽ trở thành BkitSoftware Company |
contain() | tìm kiếm chuỗi ký tự trong chuỗi này. Tìm thấy trả về true, ngược lại là false. | str.contain("ware") trả về true |
endsWith() | kiểm tra nếu chuỗi này kết thúc với hậu tố nhất định.Trả về true nếu chuỗi này kết thúc với hậu tố đã cho, nếu khác thì trả về false. | str.endsWith("ware") trả về true |
equals() | so sánh hai chuỗi đưa ra dựa trên nội dung của chuỗi. | Đã ví dụ ở phần so sánh |
equalsIgnoreCase() | so sánh hai chuỗi đưa ra dựa trên nội dung của chuỗi không phân biệt chữ hoa chữ thường. | Đã ví dụ ở phần so sánh |
format() | trả về một chuỗi được format theo miền địa phương. | String str1 = String.format("Company is %s", str); str1 sẽ là Company is BkitSoftware |
getBytes() | trả về mảng byte của chuỗi. | byte[ ] barr = str.getBytes(); |
getChars() | sao chép nội dung của chuỗi thành mảng Char cụ thể. Có 4 đối số truyền vào phương thức getChars(). | |
indexOf() | trả về chỉ số của giá trị ký tự đã cho hoặc chuỗi con. Nếu không tìm thấy trả lại giá trị -1. Chỉ số (index) được đếm từ 0. | str.indexOf("B") trả về 0 |
intern() | có thể được sử dụng để trả về chuỗi từ Pool chứa hằng số chuỗi khi nó được tạo bởi từ khóa new. | |
isEmpty() | khi chuỗi trống trả về true, ngược lại trả về false. | str.isEmpty() trả về true |
join() | trả về một chuỗi được nối với nhau bởi dấu phân tách. Trong phương thức join chuỗi, dấu phân cách được sử dụng cho mỗi chuỗi được nối. | String str1 = String.join("-","Bkit","Software") str1 là Bkit-Software |
lastIndexOf() | trả vể chỉ số cuối của ký tự hoặc chuỗi con. Nếu không tìm thấy trả về -1. Giá trị index được tính từ 0. | str.lastIndexOf("e") trả về 11 |
length() | trả về độ dài của chuỗi (tổng số ký tự theo mã unicode). | str.length() trả về 12 |
replace() | sử dụng để thay thế tất cả các ký tự hoặc chuỗi cũ thành ký tự hoặc chuỗi mới. | str.replace('B','C') trả về CkitSoftware |
replaceAll() | replaceAll() trả về một chuỗi thay thế tất cả các chuỗi ký tự phù hợp với regex. | str.replace("B","C") trả về CkitSoftware |
split() | tách chuỗi này theo biểu thức chính quy(regular expression) và trả về mảng chuỗi. | |
startsWith() | được sử dụng để kiểm tra tiền tố của chuỗi có khớp với giá trị tiền tố đã nhập không, nếu đúng trả về true, sai trả về false. | str.startsWith("ware") trả về false |
substring() | trả về chuỗi con của một chuỗi. | str.substring(1) trả về kitSoftware |
toCharArray() | được sử dụng để chuyển đổi chuỗi thành các mảng ký tự. Nó trả về một mảng ký từ có độ dài tương đương độ dài của chuỗi. | |
toLowerCase() | được sử dụng để chuyển chuỗi về dạng chữ thường. | str.toLowerCase() trả về bkitsoftware |
toUpperCase() | được sử dụng để chuyển chuỗi về dạng chữ hoa. | str.toUpperCase() trả về BKITSOFTWARE |
trim() | được sử dụng để xóa khoảng trẳng ở đầu và cuối chuỗi. | |
valueOf() | được sử dụng để chuyển đối kiểu dữ liệu khác thành chuỗi. | String.valueOf(11) trả về "11" |
Theo dõi VnCoder trên Facebook, để cập nhật những bài viết, tin tức và khoá học mới nhất!
- Bài 1: Tổng quan ngôn ngữ Java
- Bài 2: Hướng dẫn cài đặt và cấu hình Java
- Bài 3: Hướng dẫn cài đặt và cấu hình Intellij IDEA trên Window
- Bài 4: Tạo Project và làm quen với Intelij IDEA
- Bài 5: Cú pháp và quy tắc cơ bản trong Java
- Bài 6: Các kiểu dữ liệu trong Java
- Bài 7: Các kiểu biến trong Java
- Bài 8: Toán tử trong Java
- Bài 9: Hệ thống Unicode trong Java
- Bài 10: Các kiểu vòng lặp
- Bài 11: Câu lệnh điều khiển rẽ nhánh
- Bài 12: Câu lệnh Break, Continue trong Java
- Bài 13: Lớp và đối tượng
- Bài 14: Tính chất của lập trình hướng đối tượng trong Java
- Bài 15: Abstract class và Interface trong Java
- Bài 16: Từ khóa super và this trong Java
- Bài 17: Từ khóa static và final trong Java
- Bài 18: Mảng (Array) trong Java
- Bài 19: Package trong Java
- Bài 21: String trong Java
- Bài 22: StringBuffer và StringBuilder
- Bài 23: Tổng quan về File và I/O
- Bài 24: Xử lý nhập xuất bằng Byte Stream và Character Stream
- Bài 25: Thao tác với tệp và thư mục trong Java
- Bài 26: Tổng quan về Collection trong Java
- Bài 27: Những Interface phổ biến trong Java Collection Framework
- Bài 28: Những Class được triển khai dựa trên Interface của Java Collection
- Bài 29: Khái niệm xử lý ngoại lệ trong Java
- Bài 30: Hướng dẫn xử lý ngoại lệ trong Java
- Bài 31: Đa luồng trong Java
- Bài 32: Thread synchronization trong Java
- Bài 33: Tổng quan về Java AWT
- Bài 34: Container trong Java AWT
- Bài 35: Component trong Java AWT
- Bài 36: Layout Manager trong Java AWT
- Bài 37: Xử lý sự kiện trong Java AWT
- Bài 38: Tổng quan về Java Swing
- Bài 39: Container trong Java Swing
- Bài 40: Component trong Java Swing
- Bài 41: Layout trong Java Swing
- Bài 42: Event trong Java Swing
- Bài 43: Menu trong Java Swing
- Bài 44: Kết nối cơ sở dữ liệu với thư viện JDBC trong Java