Trong hướng dẫn này, chúng ta sẽ tìm hiểu về Chuỗi trong Java, cách tạo chúng và các hàm khác nhau của Chuỗi với sự trợ giúp của các ví dụ.

Trong Java, một chuỗi là một chuỗi các ký tự. Ví dụ,”hello” là một chuỗi chứa một chuỗi các ký tự ‘h’, ‘e’, ‘l’, ‘l’và ‘o’.

Chúng ta sử dụng dấu ngoặc kép để biểu diễn một chuỗi trong Java. Ví dụ,

// create a string
String type = "Java programming cafedev";

Ở đây, chúng ta đã tạo một biến chuỗi có tên type. Biến được khởi tạo bằng chuỗi là Java Programming cafedev.

Lưu ý : Strings trong Java không phải kiểu nguyên thủy (như int, char, vv). Thay vào đó, tất cả các chuỗi là đối tượng của một lớp được khai báo trước có tên String.

Và, tất cả các biến chuỗi đều là thể hiện của lớp String.

Ví dụ: Tạo một chuỗi trong Java

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

class Main {
  public static void main(String[] args) {
    
    // create strings
    String first = "Java";
    String second = "Python";
    String third = "JavaScript";

    // print strings
    System.out.println(first);   // print Java
    System.out.println(second);  // print Python
    System.out.println(third);   // print JavaScript
  }
}

Trong ví dụ trên, chúng ta đã tạo ba chuỗi có tên Đầu tiên, thứ hai và ngày thứ ba. Ở đây, chúng ta đang trực tiếp tạo các chuỗi giống như các kiểu nguyên thủy.

Tuy nhiên, có một cách khác để tạo chuỗi Java (sử dụng từ khóa new). Chúng ta sẽ tìm hiểu về điều đó sau trong hướng dẫn này.

1. Hoạt động của chuỗi trong Java

Java String cung cấp nhiều phương thức khác nhau để thực hiện các hoạt động khác nhau trên chuỗi. Chúng ta sẽ xem xét một số hoạt động chuỗi thường được sử dụng.

1.1 Lấy độ dài của một chuỗi

Để tìm độ dài của một chuỗi, chúng ta sử dụng phương thức length() của Chuỗi. Ví dụ,

class Main {
  public static void main(String[] args) {

    // create a string
    String greet = "Hello! World";
    System.out.println("String: " + greet);

    // get the length of greet
    int length = greet.length();
    System.out.println("Length: " + length);
  }
}

Đầu ra

String: Hello! World
Length: 12

Trong ví dụ trên, phương thức length() tính tổng số ký tự trong chuỗi và trả về nó.

1.2. Nối hai chuỗi

Chúng ta có thể nối hai chuỗi trong Java bằng phương thức concat()này. Ví dụ,

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

class Main {
  public static void main(String[] args) {

    // create first string
    String first = "Java ";
    System.out.println("First String: " + first);

    // create second
    String second = "Programming";
    System.out.println("Second String: " + second);

    // join two strings
    String joinedString = first.concat(second);
    System.out.println("Joined String: " + joinedString);
  }
}

Đầu ra

First String: Java 
Second String: Programming     
Joined String: Java Programming

Trong ví dụ trên, chúng tôi đã tạo hai chuỗi có tên Đầu tiên và thứ hai. Lưu ý câu lệnh,

String joinedString = first.concat(second);

Ở đây, chúng tôi kết hợp phương thức concat() Đầu tiên và thứ hai và giao nó cho đã tham gia Biến đổi.

Chúng ta cũng có thể nối hai chuỗi bằng toán tử + trong Java.

1.3. So sánh hai chuỗi

Trong Java, chúng ta có thể so sánh giữa hai chuỗi bằng phương thức equals() này. Ví dụ,

/*
Cafedev.vn - Kênh thông tin IT hàng đầu Việt Nam
@author cafedevn
Contact: cafedevn@gmail.com
Fanpage: https://www.facebook.com/cafedevn
Group: https://www.facebook.com/groups/cafedev.vn/
Instagram: https://instagram.com/cafedevn
Twitter: https://twitter.com/CafedeVn
Linkedin: https://www.linkedin.com/in/cafe-dev-407054199/
Pinterest: https://www.pinterest.com/cafedevvn/
YouTube: https://www.youtube.com/channel/UCE7zpY_SlHGEgo67pHxqIoA/
*/

class Main {
  public static void main(String[] args) {

    // create 3 strings
    String first = "java programming";
    String second = "java programming";
    String third = "python programming";

    // compare first and second strings
    boolean result1 = first.equals(second);
    System.out.println("Strings first and second are equal: " + result1);

    // compare first and third strings
    boolean result2 = first.equals(third);
    System.out.println("Strings first and third are equal: " + result2);
  }
}

Đầu ra

Strings first and second are equal: true
Strings first and third are equal: false

Trong ví dụ trên, chúng tôi đã tạo 3 chuỗi có tên Đầu tiên, thứ haivà ngày thứ ba. Ở đây, chúng tôi đang sử dụng phương thức equal() để kiểm tra xem một chuỗi có bằng với chuỗi khác hay không.

Các phương thức equals() kiểm tra nội dung của chuỗi khi so sánh chúng. 

Lưu ý : Chúng ta cũng có thể so sánh hai chuỗi bằng ==toán tử trong Java. Tuy nhiên, cách tiếp cận này khác với phương thức. equals()

2. Các phương thức của chuỗi Java

Bên cạnh những phương thức được đề cập ở trên, có nhiều phương thức chuỗi khác nhau có trong Java. Dưới đây là một số phương pháp đó:

Phương phápSự miêu tả
substring()trả về chuỗi con của chuỗi
replace()thay thế ký tự cũ được chỉ định bằng ký tự mới đã chỉ định
charAt()trả về ký tự hiện diện ở vị trí đã chỉ định
getBytes()chuyển đổi chuỗi thành một mảng byte
indexOf()trả về vị trí của ký tự được chỉ định trong chuỗi
compareTo()so sánh hai chuỗi theo thứ tự từ điển
trim()xóa mọi khoảng trắng ở đầu và cuối
format()trả về một chuỗi được định dạng
split()ngắt chuỗi thành một mảng chuỗi
toLowerCase()chuyển đổi chuỗi thành chữ thường
toUpperCase()chuyển đổi chuỗi thành chữ hoa
valueOf()trả về biểu diễn chuỗi của đối số được chỉ định
toCharArray()chuyển đổi chuỗi thành một mảng char

3. Ký tự thoát trong chuỗi Java

Ký tự thoát được sử dụng để thoát một số ký tự hiện diện bên trong một chuỗi.

Giả sử chúng ta cần bao gồm dấu ngoặc kép bên trong một chuỗi.

// include double quote 
String example = "This is the "String" class";

Vì các chuỗi được biểu diễn bằng dấu ngoặc kép , trình biên dịch sẽ xử lý”Đây là “dưới dạng chuỗi. Do đó, đoạn mã trên sẽ gây ra lỗi.

Để giải quyết vấn đề này, chúng tôi sử dụng ký tự thoát \ trong Java. Ví dụ,

// use the escape character
String example = "This is the \"String\" class.";

Bây giờ các ký tự thoát yêu cầu trình biên dịch thoát khỏi dấu ngoặc kép và đọc toàn bộ văn bản.

4. Chuỗi trong Java là bất biến

Trong Java, các chuỗi là bất biến . Điều này có nghĩa là, khi chúng ta tạo một chuỗi, chúng ta không thể thay đổi chuỗi đó.

Để hiểu sâu hơn, hãy xem xét một ví dụ:

// create a string
String example = "Hello! ";

Ở đây, chúng tôi đã tạo một biến chuỗi có tên thí dụ. Biến giữ chuỗi”Xin chào! “.

Bây giờ, giả sử chúng ta muốn thay đổi chuỗi.

// add another string "World"
// to the previous tring example
example = example.concat(" World");

Ở đây, chúng ta đang sử dụng phương thức concat() để thêm một chuỗi khác Thế giới đến chuỗi trước đó.

Có vẻ như chúng ta có thể thay đổi giá trị của chuỗi trước đó. Tuy nhiên, điều này không phải true.

Hãy xem điều gì đã xảy ra ở đây,

  1. JVM lấy chuỗi đầu tiên “Xin chào! “
  2. tạo một chuỗi mới bằng cách thêm “Thế giới” đến chuỗi đầu tiên
  3. gán chuỗi mới “Chào thế giới” đến Biến thí dụ 
  4. chuỗi đầu tiên “Xin chào! ” vẫn không thay đổi

5. Tạo chuỗi bằng từ khóa new

Cho đến nay chúng tôi đã tạo ra các chuỗi giống như các kiểu nguyên thủy trong Java.

Vì chuỗi trong Java là các đối tượng, chúng ta cũng có thể tạo chuỗi bằng cách sử dụng ừ khóa newt. Ví dụ,

// create a string using the new keyword
String name = new String("Java String");

Trong ví dụ trên, chúng tôi đã tạo một chuỗi Tên bằng cách sử dụng từ khóa new.

Ở đây, khi chúng ta tạo một đối tượng chuỗi, hàm tạo String() sẽ được gọi.

Lưu ý : Lớp String cung cấp nhiều hàm tạo khác để tạo chuỗi.

Ví dụ: Tạo chuỗi Java bằng từ khóa mới

class Main {
  public static void main(String[] args) {

    // create a string using new
    String name = new String("Java String");

    System.out.println(name);  // print Java String
  }
}

5.1 Tạo chuỗi bằng cách sử dụng literals với từ khóa mới

Bây giờ chúng ta đã biết cách tạo chuỗi bằng cách sử dụng chuỗi ký tự(literals) và từ khóa new, hãy xem sự khác biệt chính giữa chúng là gì.

Trong Java, JVM duy trì một nhóm chuỗi(literals) để lưu trữ tất cả các chuỗi của nó bên trong bộ nhớ. Nhóm chuỗi giúp tái sử dụng các chuỗi.

Trong khi tạo chuỗi bằng cách sử dụng chuỗi ký tự(literals) , giá trị của chuỗi được cung cấp trực tiếp. Do đó, trình biên dịch trước tiên sẽ kiểm tra nhóm chuỗi để xem chuỗi đã tồn tại hay chưa.

  • Nếu chuỗi đã tồn tại , chuỗi mới không được tạo. Thay vào đó, tham chiếu mới trỏ đến chuỗi hiện có.
  • Nếu chuỗi không tồn tại , chuỗi mới sẽ được tạo.

Tuy nhiên, trong khi tạo chuỗi bằng từ khóa new , giá trị của chuỗi không được cung cấp trực tiếp. Do đó chuỗi mới được tạo mọi lúc.

Cài ứng dụng cafedev để dễ dàng cập nhật tin và học lập trình mọi lúc mọi nơi tại đây.

Nguồn và Tài liệu tiếng anh tham khảo:

Tài liệu từ cafedev:

Nếu bạn thấy hay và hữu ích, bạn có thể tham gia các kênh sau của cafedev để nhận được nhiều hơn nữa:

Chào thân ái và quyết thắng!

Đăng ký kênh youtube để ủng hộ Cafedev nha các bạn, Thanks you!