Chuỗi Java

Xuất bản trong nhóm

Chuỗi trong Java là gì?

Trong lập trình, chuỗi được sử dụng rất phổ biến. Chuỗi trong java là một đối tượng đại diện cho một chuỗi ký tự được hỗ trợ bởi một mảng char. Lớp chuỗi là bất biến trong Java và triển khai các giao diện Comparable , SerializableCharSequence . Hãy xem một ví dụ để hiểu.
String str = "string"
Ở đây str là dãy gồm 6 ký tự s, t, r, i, n và g.
Chỉ số mảng Char 0 1 2 3 4 5
Giá trị S t r Tôi N g
Địa chỉ bộ nhớ 0x12824 0x12825 0x12826 0x12827 0x12828 0x12829
Như chúng ta đã biết mảng là bất biến, có nghĩa là nó không thể thay đổi sau khi khởi tạo, do đó chuỗi cũng không thể thay đổi.

Các cách khởi tạo chuỗi

Có hai cách để khởi tạo một chuỗi.
  1. Chuỗi ký tự
  2. Nhà điều hành mới

Chuỗi chữ

Cách dễ nhất và trực tiếp nhất để khai báo một chuỗi được sử dụng trong ví dụ trên. Bất cứ khi nào trình biên dịch diễn giải một chuỗi ký tự, nó luôn được chuyển đổi thành đối tượng String.
String str = "string";

Nhà điều hành mới

Chúng ta cũng có thể khởi tạo một chuỗi bằng cách sử dụng toán tử mới.
String strNew = new String("using new operator");

Ví dụ

import java.io.*;
import java.lang.*;

class StringInitializationExample {
    public static void main(String[] args)
    {
        //declare java string with a string literal
        String str = "a string literal";

        System.out.println("String str = " + str);

        //declare string using new operator
        String strNew = new String("using new operator");

        System.out.println("String strNew = " + strNew);
    }
}

đầu ra

Chuỗi str = một chuỗi ký tự Chuỗi strNew = sử dụng toán tử mới

Chuỗi so với StringBuilder so với StringBuffer

Chúng ta đã thảo luận về lớp String là gì nên chúng ta sẽ thảo luận về hai lớp còn lại và mục đích của chúng, cùng với lý do tại sao Java giới thiệu hai lớp này khi nó đã có lớp String cho chúng ta. Tốt nhất bạn nên lên trên và có bản sửa lại cho lớp String để hiểu nó một cách rõ ràng hơn.

Lý do

Như chúng ta biết rằng đối tượng lớp String là bất biến nên bất cứ khi nào chúng ta cần thay đổi chuỗi, nó sẽ không bao giờ làm thay đổi đối tượng hiện tại nhưng giá trị đã thay đổi luôn được lưu trữ dưới dạng một đối tượng String mới. Vì vậy, nếu chúng ta cần thay đổi giá trị nhiều lần, bộ nhớ cũng sẽ bị tiêu hao. Giữ quan điểm này Java đã cung cấp cho chúng ta các lớp StringBuilderStringBuffer . Bây giờ chúng ta sẽ xem chúng hữu ích như thế nào trong kịch bản này.

Bộ đệm chuỗi

Chuỗi là biểu diễn của một chuỗi ký tự bất biến nhưng StringBuffer là một chuỗi ký tự có thể thay đổi . Nó sử dụng hầu hết các phương thức của lớp String cùng với một số phương thức của chính nó để thay đổi nội dung và trình tự các ký tự. Nó an toàn cho luồng vì các phương thức của nó được đồng bộ hóa để nhiều luồng sử dụng, duy trì thứ tự nối tiếp. Nó triển khai các giao diện Serializable , AppendableCharSequence .

Cú pháp

StringBuffer str = new StringBuffer("Happy Java Programming");

Trình tạo chuỗi

StringBuilder cũng đại diện cho chuỗi ký tự có thể thay đổi. Nó cung cấp một API tương thích với lớp StringBuffer nhưng nó không an toàn cho luồng. Vì vậy, khi không có nhiều luồng, tốt hơn nên sử dụng lớp StringBuilder vì nó nhanh hơn lớp StringBuffer trong nhiều trường hợp. Các phương thức chính của lớp này là chèn và nối thêm. Nó cũng triển khai các giao diện Serializable , AppendableCharSequence .

Cú pháp

StringBuilder str = new StringBuilder("Happy Java Programming");

Hoạt động chuỗi

Trong Java, chúng ta có thể thực hiện các thao tác chuỗi như Nối , so sánh , tách , tìm độ dài , thay thế chuỗi , v.v.

Phương thức chuỗi

Lớp Chuỗi Java cung cấp nhiều phương thức khác nhau để thao tác các chuỗi hoặc thực hiện các thao tác đã thảo luận ở trên. Chúng ta hãy xem bảng dưới đây để biết một số phương thức chuỗi này.
phương pháp Sự miêu tả
Char charAt(int chỉ mục) Nó trả về giá trị char tại chỉ mục được cung cấp.
Chuỗi concat(Chuỗi str) Nó trả về một chuỗi bằng cách kết hợp một chuỗi đã chỉ định vào cuối chuỗi này.
boolean chứa(CharSequence s) Nó trả về true nếu chuỗi chứa một chuỗi giá trị char được chỉ định.
nội dung booleanEquals(CharSequence cs) Nó khớp chuỗi với chuỗi char được cung cấp.
nội dung booleanEquals(StringBuffer sb) Nó khớp chuỗi với bộ đệm chuỗi được cung cấp.
boolean kết thúcWith(Hậu tố chuỗi) Nó so sánh đầu chuỗi với hậu tố được cung cấp.
boolean bằng(Object anObject) Nó khớp chuỗi với đối tượng được cung cấp.
boolean bằngIgnoreCase(Chuỗi anotherString) Phương pháp này so sánh hai chuỗi mà không xem xét phân biệt chữ hoa chữ thường.
định dạng Chuỗi tĩnh (Định dạng chuỗi, Đối tượng… args) Nó trả về chuỗi được định dạng bằng cách sử dụng định dạng được cung cấp và các đối số.
byte getBytes() Phương thức này sử dụng bộ ký tự mặc định của nền tảng để mã hóa chuỗi thành một chuỗi byte, sau đó được lưu trữ vào một mảng byte mới.
void getChars(int start, int end, char[] dst, int dstBegin) Nó sao chép các ký tự từ chuỗi vào mảng ký tự đích.
mã băm int() Nó trả về mã băm cho chuỗi.
int indexOf(int ch) Nó trả về chỉ mục cho ký tự đã chỉ định xuất hiện đầu tiên trong chuỗi.
int indexOf(int ch, int fromIndex) Nó trả về chỉ mục cho ký tự đã chỉ định xuất hiện đầu tiên bắt đầu từ chỉ mục được cung cấp trong chuỗi này.
int indexOf(Chuỗi str) Nó tìm kiếm chuỗi con được cung cấp trong chuỗi và trả về chỉ mục ở lần xuất hiện đầu tiên.
int indexOf(Chuỗi str, int fromIndex) Nó bắt đầu tìm kiếm chuỗi con được cung cấp trong chuỗi từ chỉ mục đã cho và trả về chỉ mục ở lần xuất hiện đầu tiên.
Thực tập sinh chuỗi() Phương thức này trả về biểu diễn chuẩn của chuỗi.
int LastIndexOf(int ch) Phương thức này tìm kiếm ký tự được cung cấp trong chuỗi và trả về chỉ mục của lần xuất hiện cuối cùng.
int LastIndexOf(int ch, int fromIndex) Phương thức này tìm kiếm ngược từ chỉ mục đã cho cho ký tự được cung cấp trong chuỗi và trả về chỉ mục của lần xuất hiện cuối cùng.
int LastIndexOf(Chuỗi str) Phương thức này tìm kiếm chuỗi con được cung cấp trong chuỗi và trả về chỉ mục của lần xuất hiện cuối cùng.
int LastIndexOf(Chuỗi str, int fromIndex) Phương thức này tìm kiếm ngược từ chỉ mục đã cho cho chuỗi con được cung cấp trong chuỗi và trả về chỉ mục của lần xuất hiện cuối cùng.
chiều dài int() Phương thức này trả về độ dài của chuỗi.
kết quả khớp boolean (Chuỗi biểu thức chính quy) Nó trả về đúng hoặc sai bằng cách khớp chuỗi với biểu thức chính quy được cung cấp.
Thay thế chuỗi(char oldValue, char newValue) Phương thức này trả về một chuỗi sau khi thay thế tất cả oldValue được cung cấp bằng newValue trong chuỗi.
Chuỗi [] tách (Chuỗi biểu thức chính quy) Phương thức này tìm tất cả các kết quả khớp theo biểu thức chính quy được cung cấp trong chuỗi và phân tách nó xung quanh các kết quả khớp này.
boolean startedWith(Tiền tố chuỗi) Nó trả về true hoặc false bằng cách kiểm tra chuỗi bắt đầu bằng tiền tố được cung cấp.
Chuỗi con(int BeginIndex) Phương thức này trả về một chuỗi là chuỗi con của chuỗi này.
Chuỗi toLowerCase() Nó chuyển đổi tất cả các ký tự của chuỗi thành chữ thường bằng cách sử dụng các quy tắc của ngôn ngữ mặc định.
Cắt chuỗi() Phương thức này loại bỏ tất cả các khoảng trắng ở đầu và cuối chuỗi và trả về nó.
Giá trị chuỗi tĩnhOf(char c) Nó trả về biểu diễn chuỗi của đối số char.
Bây giờ với sự trợ giúp của một vài ví dụ, chúng ta sẽ xem cách sử dụng chúng.

Ví dụ

import java.io.*;
import java.lang.*;

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

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

    //getting the length of greeting object
    int length = greeting.length();
    System.out.println("Length: " + length);

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

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

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

    String jpf = "Java programming";
    String jps = "Java programming";
    String jpt = "Python programming";

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

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

    //converting jpf to uppercase
    System.out.println("Upper case jpf: " + jpf.toUpperCase());

    //replacing g character with v in jpf
    System.out.println("Replacing g with v in jpf: "+jpf.replace("g", "v"));
  }
}

đầu ra

Chuỗi: Xin chào! Thế giới Chiều dài: 12 Chuỗi đầu tiên: Java Chuỗi thứ hai: Lập trình Chuỗi đã tham gia: Lập trình Java Chuỗi jpf và jps bằng nhau: true Chuỗi jpf và jpt bằng nhau: sai Chữ hoa jpf: LẬP TRÌNH JAVA Thay thế g bằng v trong jpf: java provramminv

Phần kết luận

Chúng tôi hy vọng đến đây bạn đã hiểu chuỗi trong java là gì, các lớp của nó và cách triển khai các phương thức khác nhau của nó. Hãy thoải mái thực hành và quay lại bất cứ khi nào bạn cần thêm trợ giúp. Chúc bạn học tập vui vẻ!
Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION