JavaRush /Blog Java /Random-VI /Lớp chuỗi trong Java

Lớp chuỗi trong Java

Xuất bản trong nhóm
Lớp String trong Java được thiết kế để hoạt động với các chuỗi trong Java. Tất cả các chuỗi ký tự được định nghĩa trong một chương trình Java (ví dụ: "abc") đều là các thể hiện của lớp String. Hãy xem xét các đặc điểm chính của nó:
  1. Lớp này thực hiện các giao diện SerializableCharSequence. Vì nó được bao gồm trong gói java.langnên không cần phải nhập.
  2. Lớp String trong Java là lớp cuối cùng và không thể có con.
  3. Lớp String là một lớp bất biến, nghĩa là các đối tượng của nó không thể thay đổi sau khi chúng được tạo. Bất kỳ thao tác nào trên đối tượng String dẫn đến một đối tượng của lớp String sẽ dẫn đến việc tạo ra một đối tượng mới.
  4. Do tính bất biến của chúng, các đối tượng của lớp String là luồng an toàn và có thể được sử dụng trong môi trường đa luồng.
  5. Mọi đối tượng trong Java đều có thể được chuyển đổi thành một chuỗi thông qua một phương thức toStringmà tất cả các lớp Java kế thừa từ lớp đó Object.
Lớp chuỗi trong Java - 1

Làm việc với chuỗi Java

Đây là một trong những lớp được sử dụng phổ biến nhất trong Java. Nó có các phương pháp để phân tích các ký tự nhất định trong một chuỗi, để so sánh và tìm kiếm các chuỗi, trích xuất các chuỗi con, tạo một bản sao của một chuỗi với tất cả các ký tự được chuyển đổi thành chữ thường và chữ hoa, v.v. Danh sách tất cả các phương thức của lớp String có thể được tìm thấy trong tài liệu chính thức . Java cũng triển khai một cơ chế đơn giản để nối (kết nối các chuỗi), chuyển đổi các nguyên hàm thành chuỗi và ngược lại. Hãy xem một số ví dụ về cách làm việc với lớp String trong Java.

Tạo chuỗi

Cách dễ nhất để tạo một thể hiện của lớp String là gán cho nó giá trị của một chuỗi ký tự:
String s = "I love movies";
Tuy nhiên, lớp String có nhiều hàm tạo cho phép bạn:
  • tạo một đối tượng chứa một chuỗi trống
  • tạo một bản sao của biến chuỗi
  • tạo một chuỗi dựa trên một mảng ký tự
  • tạo một chuỗi dựa trên một mảng byte (có tính đến mã hóa)
  • vân vân.

Phép cộng chuỗi

Việc thêm hai chuỗi trong Java khá đơn giản bằng cách sử dụng +. Java cho phép bạn thêm cả biến và chuỗi ký tự với nhau:
public static void main(String[] args) {
    String day = "Day";
    String and = "And";
    String night = "Night";

    String dayAndNight = day + " " + and + " " + night;
}
Bằng cách thêm các đối tượng của lớp String với các đối tượng của các lớp khác, chúng ta chuyển đổi đối tượng của lớp String sang dạng chuỗi. Việc chuyển đổi các đối tượng của các lớp khác thành biểu diễn chuỗi được thực hiện thông qua lệnh gọi phương thức ngầm toStringtrên đối tượng. Hãy chứng minh điều này bằng ví dụ sau:
public class StringExamples {
    public static void main(String[] args) {
        Human max = new Human("Max");
        String out = "java object: " + max;
        System.out.println(out);
        // Output: Java object: Person named Max
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

So sánh chuỗi

Để so sánh các chuỗi, bạn có thể sử dụng phương thức equals():
public static void main(String[] args) {
    String x = "Test String";
    System.out.println("Test String".equals(x)); // true
}
Khi chữ hoa chữ thường không quan trọng đối với chúng ta khi so sánh chuỗi, chúng ta cần sử dụng phương thức equalsIgnoreCase():
public static void main(String[] args) {
       String x = "Test String";
       System.out.println("test string".equalsIgnoreCase(x)); // true
}

Chuyển đổi một đối tượng/nguyên thủy thành một chuỗi

Để chuyển đổi một thể hiện của bất kỳ lớp Java hoặc bất kỳ kiểu dữ liệu nguyên thủy nào thành biểu diễn chuỗi, bạn có thể sử dụng phương thức String.valueOf():
public class StringExamples {
    public static void main(String[] args) {
        String a = String.valueOf(1);
        String b = String.valueOf(12.0D);
        String c = String.valueOf(123.4F);
        String d = String.valueOf(123456L);
        String s = String.valueOf(true);
        String human = String.valueOf(new Human("Alex"));

        System.out.println(a);
        System.out.println(b);
        System.out.println(c);
        System.out.println(d);
        System.out.println(s);
        System.out.println(human);
        /*
        Output:
        1
        12.0
        123.4
        123456
        true
        Person named Alex
         */
    }

    static class Human {
        private String name;

        public Human(String name) {
            this.name = name;
        }

        @Override
        public String toString() {
            return "The Man with the Name" + name;
        }
    }
}

Chuyển đổi một chuỗi thành một số

Thường thì bạn cần chuyển đổi một chuỗi thành một số. Các lớp bao bọc kiểu nguyên thủy có các phương thức phục vụ chính xác mục đích này. Tất cả các phương pháp này đều bắt đầu bằng từ phân tích cú pháp. Hãy xem xét việc dịch một chuỗi thành số nguyên ( Integer) và Doublesố phân số ( ) dưới đây:
public static void main(String[] args) {
    Integer i = Integer.parseInt("12");
    Double d = Double.parseDouble("12.65D");

    System.out.println(i); // 12
    System.out.println(d); // 12.65
}

Chuyển đổi tập hợp các chuỗi thành biểu diễn chuỗi

Nếu bạn cần chuyển đổi tất cả các phần tử của một số tập hợp chuỗi thành biểu diễn chuỗi thông qua một dấu phân cách tùy ý, bạn có thể sử dụng các phương thức sau của lớp Chuỗi Java:
  • join(CharSequence delimiter, CharSequence... elements)
  • join(CharSequence delimiter, Iterable<? extends CharSequence> elements)
Dấu phân cách phần tử ở đâu delimiterelementslà một thể hiện của bộ sưu tập chuỗi/chuỗi. Hãy xem một ví dụ trong đó chúng ta chuyển đổi danh sách các chuỗi thành một chuỗi, phân tách mỗi chuỗi bằng dấu chấm phẩy:
public static void main(String[] args) {
    List<String> people = Arrays.asList(
            "Philip J. Fry",
            "Turanga Leela",
            "Bender Bending Rodriguez",
            "Hubert Farnsworth",
            "Hermes Conrad",
            "John D. Zoidberg",
            "Amy Wong"
    );

    String peopleString = String.join("; ", people);
    System.out.println(peopleString);
    /*
    Output:
    Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong
     */
}

Tách một chuỗi thành một mảng các chuỗi

Thao tác này được thực hiện bằng phương thức split(String regex) Dấu phân cách là một biểu thức chính quy chuỗi regex. Trong ví dụ bên dưới, chúng tôi sẽ thực hiện thao tác ngược lại với những gì chúng tôi đã thực hiện trong ví dụ trước:
public static void main(String[] args) {
    String people = "Philip J. Fry; Turanga Leela; Bender Bending Rodriguez; Hubert Farnsworth; Hermes Conrad; John D. Zoidberg; Amy Wong";

    String[] peopleArray = people.split("; ");
    for (String human : peopleArray) {
        System.out.println(human);
    }
    /*
    Output:
    Philip J. Fry
    Turanga Leela
    Bender Bending Rodriguez
    Hubert Farnsworth
    Hermes Conrad
    John D. Zoidberg
    Amy Wong
     */
}

Xác định vị trí của một phần tử trong chuỗi

Trong ngôn ngữ Java, String cung cấp một tập hợp các phương thức để xác định vị trí của ký tự/chuỗi con trong chuỗi:
  1. indexOf(int ch)
  2. indexOf(int ch, int fromIndex)
  3. indexOf(String str)
  4. indexOf(String str, int fromIndex)
  5. lastIndexOf(int ch)
  6. lastIndexOf(int ch, int fromIndex)
  7. lastIndexOf(String str)
  8. lastIndexOf(String str, int fromIndex)
Ở đâu:
  1. ch— biểu tượng bạn đang tìm kiếm ( char)
  2. str- chuỗi tìm kiếm
  3. fromIndex- vị trí để tìm kiếm phần tử
  4. phương thức indexOf- trả về vị trí của phần tử đầu tiên được tìm thấy
  5. phương thức lastIndexOf- trả về vị trí của phần tử cuối cùng được tìm thấy
Nếu không tìm thấy phần tử bạn đang tìm, các phương thức sẽ trả về dòng -1. Hãy thử tìm số sê-ri của các chữ cái A, K, Z, Яtrong bảng chữ cái tiếng Anh, nhưng hãy nhớ rằng việc lập chỉ mục các ký tự trong một chuỗi trong Java bắt đầu từ số 0:
public static void main(String[] args) {
    String alphabet = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
    System.out.println(alphabet.indexOf('A')); // 0
    System.out.println(alphabet.indexOf('K')); // 10
    System.out.println(alphabet.indexOf('Z')); // 25
    System.out.println(alphabet.indexOf('Я')); // -1
}

Trích xuất một chuỗi con từ một chuỗi

Để trích xuất một chuỗi con từ một chuỗi, lớp String trong Java cung cấp các phương thức:
  • substring(int beginIndex)
  • substring(int beginIndex, int endIndex)
Hãy xem cách chúng ta có thể sử dụng các phương pháp định vị phần tử và trích xuất chuỗi con để lấy tên tệp từ đường dẫn của nó:
public static void main(String[] args) {
    String filePath = "D:\\Movies\\Futurama.mp4";
    int lastFileSeparatorIndex = filePath.lastIndexOf('\\');
    String fileName = filePath.substring(lastFileSeparatorIndex + 1);
    System.out.println(fileName); //9
}

Chuyển đổi chuỗi thành chữ hoa/chữ thường:

Lớp String cung cấp các phương thức để chuyển đổi một chuỗi thành chữ hoa và chữ thường:
  • toLowerCase()
  • toUpperCase()
Hãy xem cách các phương pháp này hoạt động bằng cách sử dụng một ví dụ:
public static void main(String[] args) {
    String fry = "Philip J. Fry";

    String lowerCaseFry = fry.toLowerCase();
    String upperCaseFry = fry.toUpperCase();

    System.out.println(lowerCaseFry); // philip j. fry
    System.out.println(upperCaseFry); // PHILIP J. FRY
}
Làm việc với lớp Java này được nghiên cứu ở cấp độ ban đầu của khóa học trực tuyến JavaRush:

Nguồn bổ sung

Thông tin về lớp String cũng được cung cấp trong các bài viết khác trong cộng đồng JavaRush:
  1. Chuỗi trong Java - Bài viết này đề cập đến một số điều cơ bản khi làm việc với chuỗi trong Java.
  2. Chuỗi Java. Câu hỏi và câu trả lời phỏng vấn, phần 1 - bài viết này thảo luận về các câu hỏi phỏng vấn về chủ đề này String, đồng thời cung cấp câu trả lời cho các câu hỏi kèm theo giải thích và ví dụ về mã.
  3. Chuỗi trong Java (lớp java.lang.String) - bài viết này cung cấp phân tích sâu hơn về lớp Chuỗi và cũng thảo luận về những điều phức tạp khi làm việc với lớp này.
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION