Java String - String trong java

String trong java

Trong java, string(chuỗi) là một đối tượng biểu diễn một chuỗi các giá trị char.

Ví dụ:

char[] ch={'v','i','e','t','t','u','t','s','.','v','n'};  
String s = new String(ch);

Tương tự:

String s = "hiepsiit.com";

Lớp String trong java

Lớp String trong java cung cấp rất nhiều các phương thức để thực hiện các thao tác với chuỗi như: compare(), concat(), equals(), split(), length(), replace(), compareTo(), intern(), substring(), …

Lớp java.lang.String được implements từ các interface Serializable, Comparable and CharSequence.


CharSequence Interface

CharSequence Interface được sử dụng để biểu diễn chuỗi các ký tự. Nó được cài đặt bởi các lớp String, StringBuffer và StringBuilder. Điều này có nghĩa là chúng ta có thể tạo chuỗi ký tự trong java bằng cách sử dụng 3 lớp này.

String là bất biến (immutable) tức là không thể thay đổi. Có nghĩa là khi nào bạn thay đổi giá trị của bất kỳ chuỗi nào thì một instance mới được tạo ra. Đối với chuỗi có thể thay đổi, bạn có thể sử dụng các lớp StringBuffer và StringBuilder.

Chúng ta sẽ học về chuỗi bất biến sau. Còn bây giờ chúng ta sẽ học về string trong java là gì và cách tạo đối tượng string trong java.


String trong java là gì?

Thông thường, string là một chuỗi các ký tự. Nhưng, trong java string là một đối tượng biểu diễn một nối tiếp của các ký tự. Lớp java.lang.String được sử dụng để tạo đối tượng string.

Có 2 cách để tạo đối tượng String:

  1. Sử dụng string literal
  2. Sử dụng từ khóa new

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 s = "welcome";

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 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 s1 = "welcome";  
String s2 = "welcome"; // se khong tao instance moi

Theo ví dụ trên, chỉ có một đối tượng chuỗi “Webcome” được tạo ra. Biến s1 và s2 được tham chiếu đến đối tượng chuỗi “Webcome”.

Chú ý: Các đối tượng String được lưu trong một vùng nhớ đặc biệt đó là Pool hằng số chuỗi.


Tại sao java sử dụng string literal?

Để làm cho Java sử dụng bộ nhớ hiệu quả hơn (Vì nếu chuỗi đã tồn tại trong Pool thì sẽ không có đối tượng mới được tạo ra).


2. Sử dụng từ khóa new

String s=new String("Welcome"); // Tạo 2 đối tượng và 1 biến tham chiếu

Trong trường hợp này, JVM sẽ tạo ra một đối tượng string mới như một đối tượng trong bộ nhớ HEAP và chữ “Welcome” sẽ được đặt trong Pool. Biến s sẽ tham chiếu tối đối tượng được tạo ra trong HEAP.

Ví dụ về Java String

public class StringExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java";
        char ch[] = { 's', 't', 'r', 'i', 'n', 'g', 's' };
        String s2 = new String(ch);
        String s3 = new String("example");
        System.out.println(s1);
        System.out.println(s2);
        System.out.println(s3);
	}

}

Kết quả:


Các phương thức của lớp String trong java

Lớp java.lang.String cung cấp nhiều phương thức hữu ích để thực hiện các thao tác trên chuỗi của các giá trị char.

No. Phương thức Mô tả
1 char charAt(int index) Trả về giá trị char cho chỉ số cụ thể.
2 int length() Trả về độ dài chuỗi.
3 static String format(String format, Object… args) Trả về chuỗi được format.
4 static String format(Locale l, String format, Object… args) Trả về chuỗi được format theo vùng miền(quốc gia).
5 String substring(int beginIndex) Trả về chuỗi con bắt đầu từ chỉ số index.
6 String substring(int beginIndex, int endIndex) Trả về chuỗi con từ chỉ số bắt đầu đến chỉ số kết thúc.
7 boolean contains(CharSequence s) Kiểm tra chuỗi chứa chuối không, kết quả trả về là giá trị boolean.
8 static String join(CharSequence delimiter, CharSequence… elements) Trả về chuỗi được nối từ nhiều chuỗi.
9 static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements) Trả về chuỗi được nối từ nhiều chuỗi.
10 boolean equals(Object another) kiểm tra sự tương đương của chuỗi với đối tượng.
11 boolean isEmpty() Kiểm tra chuỗi rỗng.
12 String concat(String str) Nối chuỗi cụ thể.
13 String replace(char old, char new) Thay thế tất cả giá trị char cụ thể bằng một giá trị char mới.
14 String replace(CharSequence old, CharSequence new) Thay thế tất cả các chuỗi bằng một chuỗi mới.
15 static String equalsIgnoreCase(String another) So sanh chuỗi, không phân biệt chữ hoa hay chữ thường.
16 String[] split(String regex) Trả về mảng các chuỗi được tách ra theo giá trị regex.
17 String[] split(String regex, int limit) Trả về mảng các chuỗi được tách ra theo giá trị regex và có giới hạn.
18 String intern() Trả về chuỗi interned.
19 int indexOf(int ch) Trả về vị trí của ký tự ch cụ thể.
20 int indexOf(int ch, int fromIndex) Trả về vị trí của ký tự ch tính từ từ vị trí fromIndex.
21 int indexOf(String substring) Trả về vị trí của chuỗi con substring.
22 int indexOf(String substring, int fromIndex) Trả về chuỗi con bắt đầu từ vị trí substring đến vị trí fromIndex.
23 String toLowerCase() Trả về chuỗi chữ thường.
24 String toLowerCase(Locale l) Trả về chuỗi chữ thường bằng việc sử dụng locale cụ thể.
25 String toUpperCase() Trả về chuỗi chữ hoa.
26 String toUpperCase(Locale l) Trả về chuỗi chữ hoa bằng việc sử dụng locale cụ thể.
27 String trim() Xóa khoảng trẳng ở đầu và cuối của chuỗi.
28 static String valueOf(int value) Chuyển đổi giá trị kiểu dữ liệu đã cho thành chuỗi.