Lớp String, StringBuilder, StringBuffer trong Java

Bài viết này chúng ta cùng tìm hiểu về lớp String, StringBuilder, StringBuffer.

Trong Java. String là 1 chuỗi một đối tượng được biểu diễn một chuỗi giá trị char.

char ch[] = {v,i,e,t, ,n,a,m , v,o, ,d,i,c,h};

String t = new String(ch);

Tương tự ta có cách viết khác :
String t = "viet nam vo dich";

Lớp java.lang.String được implements từ các interface Serializable, Comparable, CharSequence.
Trong Java lớp String được cung cấp rất nhiều phương thức để cho ta thực hiện các thao tác với chuỗi concat, substring, length, trim , split, equals, replace , ....

CharSequence là interface được biểu diễn bởi các chuỗi ký tự. Lớp String, StringBuffer, StringBuilder được implements từ interface CharSequence.

Cú pháp khởi tạo String :
Cách 1 : char s [] = {v,i,e,t,n,a,m};
              String t = new String(s)  // convert chuỗi s sang thành String
Cách 2 : String t1 = "vietnam";

Output : System.out.println(t);  // in ra màn hình chuỗi t
              System.out.println(t1) // in ra màn hình chuỗi t1

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

Đối với khái niệm immutable và mutable , ta sẽ có bài viết khác về 2 khái niệm này.

Khi làm việc với dữ liệu văn bản, ta có thể làm việc với cả ba lớp String, StringBuffer, StringBuilder.
Đối với việc phải xử lý dữ liệu lớn , ta thường làm việc với StringBuffer, StringBuilder.

StringBuffer và StringBuilder là giống nhau, khác nhau khi ta làm việc với đa luồng ( Thread )

Đối với việc ứng dụng đa luồng , tức là có nhiều luồng dữ liệu ( Thread ) StringBuffer được sử dụng để tránh việc tranh chấp giữa các luồng.
Đối với ứng dụng có 1 luồng , StringBuilder được sử dụng.

Nếu so sánh về tốc độ StringBuilder là nhanh nhất, sau đó đến StringBuffer, và chậm nhất là String.

Ví dụ sử dụng String

class Student{
             
          public static void main(String[] args){
                  String s = "Viet Nam";
                  char ch[] = {m,a,l,a,y,s,i,a};
                  String s1 = new String(ch)  // convert chuỗi kí tự char ch sang String
                  System.out.println(s);
                  System.out.print(s1);
         } 
}
=> Output : // in ra s1 : malaysia
                    // in ra s   : Viet Nam

Một số phương thức sử dụng với String :
_ String trim() : cắt khoảng trắng hai đầu chuỗi
_ String [] split(String regex) : Cắt chuỗi ra mảng theo regex
_ String [] split(String regex,int limit) : Cắt chuỗi ra mảng theo regex có giới hạn ký tự
_ boolean contains(charSequence)  : kiểm tra chuỗi con có trong chuỗi cha không trả về boolean
_ int length : tính độ dài của chuỗi
_ String Substring(int index) : trả về chuỗi bắt đầu từ vị trí index
_ String Substring(int startindex, int endindex ) : trả về chuỗi từ vị trí start index đến end index
_ boolean isEmpty : kiểm tra chuỗi có rỗng không ?
_ String concat(String str) : nối chuỗi cụ thể
....

Ví dụ sử dụng StringBuilder, StringBuffer

public class Staff{
   
       public static void main(String[] args){
                 StringBuilder sb = new StringBuilder();
                 sb.append("Viet Nam");

                 StingBuilder str = new StringBuilder("Malaysia");
                 // in ra màn hình
                 System.out.println(sb);
                 System.out.println(str);
       }
}
// Output : Viet Nam
                  Malaysia

Trên đây, tôi đã giới thiệu qua một số khái niệm về lớp String, StringBuilder, StringBuffer cùng một số phương thức làm việc với 3 lớp này. Thực tế khi làm việc với nhiều bài toán có liên quan đến String, chúng ta sẽ làm việc nhiều với các lớp này. 










Nhận xét

Bài đăng phổ biến từ blog này

Hướng dẫn đăng nhập sử dụng JSP Servlet + MySQL

Hướng dẫn kết nối Hibernate làm form Đăng Ký JSP + MySQL + Hibernate

Mô hình MVC và Ứng dụng login đăng nhập