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.

Immutable String trong java

Immutable String trong java

Trong java đối tượng string là bất biến(immutable). Bất biến có nghĩa là không thể thay đổi.

Ví dụ:

public class Testimmutablestring {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "Hello";
        s.concat(" Java");
        System.out.println(s);
	}

}

Kết quả:

Nhưng nếu chúng ta gán s vào biến tham chiếu, s sẽ được tham chiếu đến chuỗi mới.

Ví dụ:

public class Testimmutablestring {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "Hello";
        s = s.concat(" Java");
        System.out.println(s);
	}

}

Kết quả:

Lúc này, s sẽ trỏ đến “Hello Java”. Nhưng đối tượng chuỗi “Hello” vẫn tồn tại trong Pool hằng chuỗi và không bị thay đổi.

So sánh chuỗi trong java

So sánh chuỗi trong java

Chúng ta có thể so sánh chuỗi trong java trên cơ sở nội dung và tham chiếu của nó.

Nó được sử dụng trong xác thực (bởi phương thức equals()), sắp xếp (theo phương thức compareTo()), so sánh tham chiếu(với toán tử ==), vv

Có ba cách để so sánh chuỗi trong java:

  1. Sử dụng phương thức equals()
  2. Sử dụng toán tử ==
  3. Sử dụng phương thức compareTo()

1) So sánh chuỗi bằng phương thức equals()

Phương thức equals() được sử dụng để so sánh nội dung của 2 chuỗi. Lớp String cung cấp 2 phương thức equals():

  • public boolean equals(Object another): so sánh 2 chuỗi có phân biệt chữ hoa, chữ thường.
  • public boolean equalsIgnoreCase(String another): so sánh 2 chuỗi không phân biệt chữ hoa, chữ thường.

Ví dụ 1:

public class Teststringcomparison1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "Hello";
        String s2 = "Hello";
        String s3 = new String("Hello");
        String s4 = "Hallo";
        System.out.println(s1.equals(s2));//true
        System.out.println(s1.equals(s3));//true
        System.out.println(s1.equals(s4));//false
	}

}

Kết quả:

Ví dụ 2:

public class Teststringcomparison2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "Hello";
        String s2 = "HELLO";
        System.out.println(s1.equals(s2));//false  
        System.out.println(s1.equalsIgnoreCase(s2));//true  
	}

}

Kết quả:

2) So sánh chuỗi bằng toán tử ==

Toán tử == được sử dụng để so sánh tham chiếu (không phải giá trị) của 2 chuỗi.

Ví dụ 3:

public class Teststringcomparison3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "Hello";
        String s2 = "Hello";
        String s3 = new String("Hello");
        System.out.println(s1 == s2);//true (vì cả 2 cùng tham chiếu instance giống nhau)  
        System.out.println(s1 == s3);//false(vì s3 tham chiếu instance mà không ở trong Pool)
	}

}

Kết quả:

3) So sánh chuỗi bằng phương thức compareTo()

Phương thức compareTo () so sánh các giá trị theo thứ tự từ điển và trả về một giá trị số nguyên mô tả nếu chuỗi đầu tiên nhỏ hơn, bằng hoặc lớn hơn chuỗi thứ hai.

Giả sử s1 và s2 là hai biến chuỗi. Nếu:

  • s1 == s2 : 0
  • s1 > s2 : giá trị > 0
  • s1 < s2 : giá trị < 0

Ví dụ 4:

public class Teststringcomparison4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "Hello";
	    String s2 = "Hello";
	    String s3 = "Java";
	    System.out.println(s1.compareTo(s2));
	    System.out.println(s1.compareTo(s3));
	    System.out.println(s3.compareTo(s1));
	}

}

Kết quả:

Nối chuỗi trong java

Nối chuỗi trong java

Trong java, việc nối chuỗi để tạo thành một chuỗi mới là sự kết hợp của nhiều chuỗi. Có 2 cách để nối chuỗi trong java:

  1. Sử dụng toán tử +
  2. Sử dụng phương thức concat()

1) Nối chuỗi bằng toán tử +

Ví dụ 1:

public class TestStringConcatenation1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "Hello" + " Java" + "!";
        System.out.println(s);
	}

}

Kết quả:

Trình biên dịch Java biến đổi code trên thành:

String s=(new StringBuilder()).append("Hello").append(" Java).append("!").toString();

Trong java, việc nối chuỗi được thực hiện thông qua lớp StringBuilder (hoặc StringBuffer) và phương thức append() của nó. Nối chuỗi trong java để tạo ra một chuỗi mới bằng cách thêm các toán hạng thứ hai vào cuối các toán hạng đầu tiên. Chức năng này có thể áp dụng cho cả các giá trị nguyên thủy.

Ví dụ 2:

public class TestStringConcatenation2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = 50 + 30 + "-Java-" + 40 + 40;
        System.out.println(s);
	}

}

Kết quả:

Sau chuỗi, tất cả tính toán với toán tử + sẽ được thực hiện là cộng chuỗi.

2) Nối chuỗi bằng phương thức concat()

Phương thức concat() sẽ nói chuỗi vào cuối chuỗi hiện tại.

Ví dụ 3:

public class TestStringConcatenation1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "Hello ";
        String s2 = "hiepsiit.com";
        String s3 = s1.concat(s2);
        System.out.println(s3);
	}

}

Kết quả:

Substring trong java

Substring trong java

Một phần của chuỗi được gọi là chuỗi con(substring). Nói cách khác, chuỗi con là một tập hợp con của một chuỗi khác.

Có 2 phương thức để lấy chuỗi con từ một chuỗi đã cho:

  1. public String substring(int startIndex): Phương thức này trả về đối tượng chuỗi mới là chuỗi con của chuỗi đã cho tính từ startIndex đã nhập đến cuối cùng.
  2. public String substring(int startIndex, int endIndex): Phương thức này trả về đối tượng chuỗi mới là chuỗi con của chuỗi đã cho tính startIndex đến endIndex đã nhập.

Chú ý: Chỉ số(index) được tính từ 0.

Xem ví dụ sau để hiểu về startIndex và endIndex

Ví dụ 1:

public class TestSubstring1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="hello";
		System.out.println(s.substring(0,2)); //he
	}

}

Kết quả:

Ví dụ 2:

public class TestSubstring2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s = "Hello I'm Java";
        System.out.println(s.substring(5));   //I'm Java
        System.out.println(s.substring(0, 5));//Hello
	}

}

Kết quả:

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

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

Lớp java.lang.String cung cấp rất nhiều phương thức để xử lý chuỗi. Các phương thức này giúp chúng ta thực hiện nhiều thao tác như cắt, ghép, chuyển đổi, so sánh, thay thế các chuỗi, …

Dưới đây là những phương thức quan trọng của lớp String.

Phương thức toUpperCase() và toLowerCase()

Phương thức toUpperCase() chuyển đối chuỗi thành dạng chữ hoa và phương thức toLowerCase() chuyển đổi chuỗi thành dạng chữ thường.

public class StringExample01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="Hello Java";  
		System.out.println(s.toUpperCase());//HELLO JAVA
		System.out.println(s.toLowerCase());//hello java
		System.out.println(s);//Hello Java
	}

}

Kết quả:

Phương thức trim()

Phương thức trim() được sử dụng để xóa khoảng trẳng ở đầu và cuối của chuỗi.

public class StringExample02 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="    Java    ";  
		System.out.println(s);//    Java    
		System.out.println(s.trim());//Java  
	}

}

Kết quả:

Phương thức startsWith() và endsWith()

public class StringExample03 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="Hello Java";  
		System.out.println(s.startsWith("He"));//true  
		System.out.println(s.endsWith("a"));//true 
	}

}

Kết quả:

Phương thức charAt()

Phương thức charAt() trả về một ký tự tại một ví trí cụ thể.

public class StringExample04 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="Hello Java";  
		System.out.println(s.charAt(0));//H
		System.out.println(s.charAt(6));//J
	}

}

Kết quả:

Phương thức length()

Phương thức length() trả độ dài của chuỗi.

public class StringExample05 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s="Hello Java";  
		System.out.println(s.length());//10
	}

}

Kết quả:

Phương thức intern()

Khi phương thức intern() được gọi, nếu Pool chữa một chuối bằng đối tượng chuỗi này (so sánh bằng phương thức equals(Object)) thì trả về chuỗi trong Pool. Ngược lại, đối tượng chuỗi sẽ được thêm vào Pool và trả về tham chiếu của đối tượng chuỗi này.

public class StringExample06 {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s=new String("Hello");  
		String s2=s.intern();  
		System.out.println(s2);//Hello  
	}
	
}

Kết quả:

Phương thức valueOf()

Phương thức valueOf() chuyển đổi kiểu dữ liệu như int, long, float, double, boolean, char and mảng char thành kiểu String.

public class StringExample07 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int a=10;  
		String s=String.valueOf(a);  
		System.out.println(s+10); 
	}

}

Kết quả:

Phương thức replace()

Phương thức replace() được sử dụng để thay thế chuỗi này bằng chuỗi khác.

public class StringExample08 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1="Java là ngôn ngữ lập trình. \nJava là một nền tảng. \nJava là một hòn đảo. \nJava là một ly cà phê bốc khói";    
		String replaceString=s1.replace("Java","Ja");//thay the "Java" to "Ja"
		System.out.println(replaceString);
	}

}

Kết quả:

Lớp StringBuffer trong java

Lớp StringBuffer trong java

Trong java, lớp StringBuffer được sử dụng để tạo chuỗi có thể thay đổi (mutable). Lớp StringBuffer trong java tương tự như lớp String ngoại trừ nó có thể thay đổi.

Chú ý: Lớp StringBuffer là thread-safe (luồng an toàn) nghĩa là nhiều luồng (thread) không thể truy cập nó trong cùng một thời điểm.

Các Constructor quan trọng của lớp StringBuffer trong java

  1. StringBuffer(): Tạo ra một bộ đệm chuỗi với dung lượng ban đầu là 16.
  2. StringBuffer(String str): Tạo ra một bộ đệm chuỗi với chuỗi cụ thể.
  3. StringBuffer(int capacity): Tạo ra một bộ đệm chuỗi với dung lượng được chỉ định như độ dài chuỗi.

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

  1. public synchronized StringBuffer append(String s): được sử dụng để nối thêm các chuỗi được chỉ định với chuỗi này. Các phương thức append() được nạp chồng như append(char), append(boolean), append(int), append(float), append(double), …
  2. public synchronized StringBuffer insert(int offset, String s): được sử dụng để chèn chuỗi chỉ định với chuỗi này tại vị trí quy định. Các phương thức insert() được nạp chồng như insert(int, char), insert(int, boolean), insert(int, int), insert(int, float), insert(int, double), …
  3. public synchronized StringBuffer replace(int startIndex, int endIndex, String str): được sử dụng để thay thế chuỗi từ vị trị startIndex đến endIndex bằng chuỗi str.
  4. public synchronized StringBuffer delete(int startIndex, int endIndex): được sử dụng để xóa chuỗi từ vị trí startIndex đến endIndex.
  5. public synchronized StringBuffer reverse(): được sử dụng để đảo ngược chuỗi.
  6. public int capacity(): được sử dụng để trả về dung lượng hiện tại.
  7. public void ensureCapacity(int minimumCapacity): được sử dụng để đảm bảo dung lượng ít nhất bằng mức tối thiểu nhất định.
  8. public char charAt(int index): được sử dụng trả về ký tự tại vị trí quy định.
  9. public int length(): được sử dụng trả về chiều dài của chuỗi nghĩa là tổng số ký tự.
  10. public String substring(int beginIndex): được sử dụng trả về chuỗi con bắt đầu từ vị trí được chỉ định.
  11. public String substring(int beginIndex, int endIndex): được sử dụng trả về chuỗi con với vị trí bắt đầu và vị trí kết thúc được chỉ định.

Chuỗi có thể sửa đổi là gì?

Một chuỗi có thể chỉnh sửa hoặc thay đổi được gọi là chuỗi có thể sửa đổi. Các lớp StringBuffer và StringBuilder được sử dụng để tạo ra chuỗi có thể sửa đổi(mutable).

1) Phương thức append() của lớp StringBuffer trong java

Phương thức append() của lớp StringBuffer nối thêm tham số vào cuối chuỗi.

public class StringBufferExam1 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer("Hello ");
        sb.append("Java");//đến đây chuỗi ban đầu đã bị thay đổi
        System.out.println(sb);//in Hello Java  
    }
}

2) Phương thức insert() của lớp StringBuffer trong java

Phương thức insert() của lớp StringBuffer chèn chuỗi vào chuỗi này từ vị trí quy định.

public class StringBufferExam2 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer("Hello ");
        sb.insert(1, "Java");//đến đây chuỗi ban đầu đã bị thay đổi
        System.out.println(sb);//in -> HJavaello  
    }
}

3) Phương thức replace() của lớp StringBuffer trong java

Phương thức replace() của lớp StringBuffer thay thế chuỗi bằng chuỗi khác từ vị trị bắt đầu và kết thúc được quy định.

public class StringBufferExam3 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer("Hello");
        sb.replace(1, 3, "Java");
        System.out.println(sb);//in -> HJavalo  
    }
}

4) Phương thức delete() của lớp StringBuffer trong java

Phương thức replace() của lớp StringBuffer xóa chuỗi từ vị trị bắt đầu và kết thúc được quy định.

public class StringBufferExam4 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer("Hello");
        sb.delete(1, 3);
        System.out.println(sb);//in -> Hlo  
    }
}

5) Phương thức reverse() của lớp StringBuffer trong java

Phương thức reverse() của lớp StringBuffer đảo ngược chuỗi hiện tại.

public class StringBufferExam5 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer("Hello");
        sb.reverse();
        System.out.println(sb);//in -> olleH  
    }
}

6) Phương thức capacity() của lớp StringBuffer trong java

Phương thức capacity() của lớp StringBuffer trả về dung lượng của bộ nhớ đệm. Dung lượng mặc định của bộ nhớ đệm là 16. Nếu số lượng ký tự của chuỗi tăng lên thì dung lượng được tính theo công thức (dung lượng cũ*2)+2. Ví dụ: Nếu dung lượng hiện tại là 16, nó sẽ tăng lên (16*2)+2=34.

public class StringBufferExam6 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer();
        System.out.println(sb.capacity());//mặc định là 16  
        sb.append("Hello");
        System.out.println(sb.capacity());//đến đây vẫn là 16  
        sb.append("java is my favourite language");
        System.out.println(sb.capacity());//đến đây là (16*2)+2=34 i.e (dung lượng cũ*2)+2  
    }
}

7) Phương thức ensureCapacity() của lớp StringBuffer trong java

Phương thức ensureCapacity() của lớp StringBuffer đảm bảo rằng dung lượng đã cho là tối thiểu với dung lượng hiện tại. Nếu nó lớn hơn dung lượng hiện tại, dung lượng hiện tại được tăng theo công thức (dung lượng cũ*2)+2. Ví dụ, dung lượng hiện tại là 16, nó sẽ tăng lên là (16*2)+2=34.

public class StringBufferExam7 {
    public static void main(String args[]) {
        StringBuffer sb = new StringBuffer();
        System.out.println(sb.capacity());//mặc định là 16  
        sb.append("Hello");
        System.out.println(sb.capacity());//đến đây là 16  
        sb.append("java is my favourite language");
        System.out.println(sb.capacity());//đến đây là (16*2)+2=34 i.e (dung lượng cũ*2)+2  
        sb.ensureCapacity(10);//đến đây không có sự thay đổi
        System.out.println(sb.capacity());//đến đây là 34  
        sb.ensureCapacity(50);//đến đây là (34*2)+2  
        System.out.println(sb.capacity());//đến đây là 70  
    }
}

 

Lớp StringBuilder trong java

Lớp StringBuilder trong java

Trong java, lớp StringBuilder được sử dụng để tạo chuỗi có thể thay đổi (mutable). Lớp StringBuilder trong java tương tự như lớp StringBuilder ngoại trừ nó không đồng bộ(non-synchronized).

Các Constructor quan trọng của lớp StringBuilder trong java

  1. StringBuilder(): Tạo ra một Builder chuỗi với dung lượng ban đầu là 16.
  2. StringBuilder(String str): Tạo ra một Builder chuỗi với chuỗi cụ thể.
  3. StringBuilder(int capacity): Tạo ra một Builder chuỗi với dung lượng được chỉ định như độ dài chuỗi.

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

  1. public StringBuilder append(String s): được sử dụng để nối thêm các chuỗi được chỉ định với chuỗi này. Các phương thức append() được nạp chồng như append(char), append(boolean), append(int), append(float), append(double), …
  2. public StringBuilder insert(int offset, String s): được sử dụng để chèn chuỗi chỉ định với chuỗi này tại vị trí quy định. Các phương thức insert() được nạp chồng như insert(int, char), insert(int, boolean), insert(int, int), insert(int, float), insert(int, double), …
  3. public StringBuilder replace(int startIndex, int endIndex, String str): được sử dụng để thay thế chuỗi từ vị trị startIndex đến endIndex bằng chuỗi str.
  4. public StringBuilder delete(int startIndex, int endIndex): được sử dụng để xóa chuỗi từ vị trí startIndex đến endIndex.
  5. public StringBuilder reverse(): được sử dụng để đảo ngược chuỗi.
  6. public int capacity(): được sử dụng để trả về dung lượng hiện tại.
  7. public void ensureCapacity(int minimumCapacity): được sử dụng để đảm bảo dung lượng ít nhất bằng mức tối thiểu nhất định.
  8. public char charAt(int index): được sử dụng trả về ký tự tại vị trí quy định.
  9. public int length(): được sử dụng trả về chiều dài của chuỗi nghĩa là tổng số ký tự.
  10. public String substring(int beginIndex): được sử dụng trả về chuỗi con bắt đầu từ vị trí được chỉ định.
  11. public String substring(int beginIndex, int endIndex): được sử dụng trả về chuỗi con với vị trí bắt đầu và vị trí kết thúc được chỉ định.

Các ví dụ về lớp StringBuilder trong java

Dưới đây là các ví dụ về các phương thức của lớp StringBuilder trong java

1) Phương thức append() của lớp StringBuilder trong java

Phương thức append() của lớp StringBuilder nối thêm tham số vào cuối chuỗi.

public class StringBuilderExam1 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder("Hello ");
        sb.append("Java");//đến đây chuỗi ban đầu đã bị thay đổi
        System.out.println(sb);//in Hello Java  
    }
}

2) Phương thức insert() của lớp StringBuilder trong java

Phương thức insert() của lớp StringBuilder chèn chuỗi vào chuỗi này từ vị trí quy định.

public class StringBuilderExam2 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder("Hello ");
        sb.insert(1, "Java");//đến đây chuỗi ban đầu đã bị thay đổi
        System.out.println(sb);//in -> HJavaello  
    }
}

3) Phương thức replace() của lớp StringBuilder trong java

Phương thức replace() của lớp StringBuilder thay thế chuỗi bằng chuỗi khác từ vị trị bắt đầu và kết thúc được quy định.

public class StringBuilderExam3 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.replace(1, 3, "Java");
        System.out.println(sb);//in -> HJavalo  
    }
}

4) Phương thức delete() của lớp StringBuilder trong java

Phương thức replace() của lớp StringBuilder xóa chuỗi từ vị trị bắt đầu và kết thúc được quy định.

public class StringBuilderExam4 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.delete(1, 3);
        System.out.println(sb);//in -> Hlo  
    }
}

5) Phương thức reverse() của lớp StringBuilder trong java

Phương thức reverse() của lớp StringBuilder đảo ngược chuỗi hiện tại.

public class StringBuilderExam5 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder("Hello");
        sb.reverse();
        System.out.println(sb);//in -> olleH  
    }
}

6) Phương thức capacity() của lớp StringBuilder trong java

Phương thức capacity() của lớp StringBuilder trả về dung lượng của bộ nhớ đệm. Dung lượng mặc định của bộ nhớ đệm là 16. Nếu số lượng ký tự của chuỗi tăng lên thì dung lượng được tính theo công thức (dung lượng cũ*2)+2. Ví dụ: Nếu dung lượng hiện tại là 16, nó sẽ tăng lên (16*2)+2=34.

public class StringBuilderExam6 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder();
        System.out.println(sb.capacity());//mặc định là 16  
        sb.append("Hello");
        System.out.println(sb.capacity());//đến đây vẫn là 16  
        sb.append("java is my favourite language");
        System.out.println(sb.capacity());//đến đây là (16*2)+2=34 i.e (dung lượng cũ*2)+2  
    }
}

7) Phương thức ensureCapacity() của lớp StringBuilder trong java

Phương thức ensureCapacity() của lớp StringBuilder đảm bảo rằng dung lượng đã cho là tối thiểu với dung lượng hiện tại. Nếu nó lớn hơn dung lượng hiện tại, dung lượng hiện tại được tăng theo công thức (dung lượng cũ*2)+2. Ví dụ, dung lượng hiện tại là 16, nó sẽ tăng lên là (16*2)+2=34.

public class StringBuilderExam7 {
    public static void main(String args[]) {
        StringBuilder sb = new StringBuilder();
        System.out.println(sb.capacity());//mặc định là 16  
        sb.append("Hello");
        System.out.println(sb.capacity());//đến đây là 16  
        sb.append("java is my favourite language");
        System.out.println(sb.capacity());//đến đây là (16*2)+2=34 i.e (dung lượng cũ*2)+2  
        sb.ensureCapacity(10);//đến đây không có sự thay đổi
        System.out.println(sb.capacity());//đến đây là 34  
        sb.ensureCapacity(50);//đến đây là (34*2)+2  
        System.out.println(sb.capacity());//đến đây là 70  
    }
}

 

Sự khác nhau giữa String và StringBuffer trong java

Sự khác nhau giữa String và StringBuffer trong java

Sự khác nhau giữa String và StringBuffer trong java được thể hiện trong bảng sau:

No. String StringBuffer
1) Lớp String là bất biến (immutable). Lớp StringBuffer là có thể sửa đổi (mutable).
2) Khi bạn thực hiện nối nhiều chuỗi thì lớp String xử lý chậm và tốn nhiều bộ nhớ hơn, bởi vì mỗi lần nối thêm chuỗi nó tạo ra instance mới. Khi bạn thực hiện nối nhiều chuỗi thì lớp StringBuffer xử lý nhanh và tốn ít bộ nhớ hơn.
3) Lớp String ghi đề phương thức equals() của lớp Object. Vì thế bạn có thể so sánh nội dung của 2 chuỗi bằng phương thức equals(). Lớp StringBuffer không ghi đề phương thức equals() của lớp Object.

Test hiệu suất của String và StringBuffer

public class ConcatTest {

	public static String concatWithString() {
        String t = "Java";
        for (int i = 0; i < 10000; i++) {
            t = t + "Hello";
        }
        return t;
    }
 
    public static String concatWithStringBuffer() {
        StringBuffer sb = new StringBuffer("Java");
        for (int i = 0; i < 10000; i++) {
            sb.append("Hello");
        }
        return sb.toString();
    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long startTime = System.currentTimeMillis();
        concatWithString();
        System.out.println("Thời gian nối chuỗi của lớp String: "
                + (System.currentTimeMillis() - startTime) + "ms");
        startTime = System.currentTimeMillis();
        concatWithStringBuffer();
        System.out.println("Thời gian nối chuỗi của lớp StringBuffer: "
                + (System.currentTimeMillis() - startTime) + "ms");
	}

}

Kết quả:

Test hiệu suất của String và StringBuffer

public class InstanceTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		System.out.println("Test Hashcode của String:");
        String str = "java";
        System.out.println(str.hashCode());
        str = str + "viettuts";
        System.out.println(str.hashCode());
 
        System.out.println("Test Hashcode của StringBuffer:");
        StringBuffer sb = new StringBuffer("java");
        System.out.println(sb.hashCode());
        sb.append("viettuts");
        System.out.println(sb.hashCode());
	}

}

Sự khác nhau giữa StringBuffer và StringBuilder trong java

Sự khác nhau giữa StringBuffer và StringBuilder trong java

Sự khác nhau giữa StringBuffer và StringBuilder trong java được thể hiện trong bảng sau:

No. StringBuffer StringBuilder
1) StringBuffer là đồng bộ (synchronized) tức là luồng an toàn. Điều này có nghĩa là không thể có 2 luồng cùng truy cập phương thức của lớp StringBuffer đồng thời. StringBuilder là không đồng bộ (non-synchronized) tức là luồng không an toàn. Điều này có nghĩa là có 2 luồng cùng truy cập phương thức của lớp StringBuilder đồng thời.
2) StringBuffer không hiệu quả bằng StringBuilder. StringBuilder hiệu quả hơn StringBuffer.

Ví dụ về StringBuffer trong java

public class BufferTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuffer buffer = new StringBuffer("hello");
        buffer.append("java");
        System.out.println(buffer);
	}

}

Kết quả:

Ví dụ về StringBuilder trong java

public class BuilderTest {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringBuilder builder = new StringBuilder("hello");
        builder.append("java");
        System.out.println(builder);
	}

}

Kết quả:

Test hiệu suất của StringBuffer và StringBuilder trong java trong java

public class ConcatTest01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		long startTime = System.currentTimeMillis();
        StringBuffer sb = new StringBuffer("Java");
        for (int i = 0; i < 100000; i++) {
            sb.append("Hello");
        }
        System.out.println("Thời gian nối chuỗi của StringBuffer: "
                + (System.currentTimeMillis() - startTime) + "ms");
        startTime = System.currentTimeMillis();
        StringBuilder sb2 = new StringBuilder("Java");
        for (int i = 0; i < 100000; i++) {
            sb2.append("Hello");
        }
        System.out.println("Thời gian nối chuỗi của StringBuilder: "
                + (System.currentTimeMillis() - startTime) + "ms");
	}

}

Kết quả:

Cách tạo lớp Immutable trong java

Cách tạo lớp Immutable trong java

Có một vài lớp bất biến như String, Boolean, Byte, Short, Integer, Long, Float, Double, … Hay tất cả những lớp bao bọc và lớp String là bất biến(immutable). Chúng ta có thể tạo ra lớp bất biến bằng cách khai báo class là final và thành viên dữ liệu của nó cũng là final như ví dụ dưới đây:

public final class Employee {
    final String pancardNumber;
 
    public Employee(String pancardNumber) {
        this.pancardNumber = pancardNumber;
    }
 
    public String getPancardNumber() {
        return pancardNumber;
    }
}

Lớp trên là bất biến vì:

  1. Biến instance của lớp là final tức là chúng ta không thể thay đổi giá trị của nó sau khi tạo một đối tượng.
  2. Lớp là final nên không có class con.
  3. Không có phương thức setter tức là không có tùy chọn để thay đổi giá trị của biến instance.

Phương thức toString trong java

Phương thức toString trong java

Nếu bạn muốn đại diện bất kỳ đối tượng nào dưới dạng chuỗi. Bạn có thể sử dụng phương thức toString().

Phương thức toString() trả về chuỗi đại diện của đối tượng.

Khi bạn in đối tượng, nội bộ trình biên dịch java sẽ gọi phương thức toString() từ đối tượng đó và trả về kết quả mong muốn. Nó có thể là trạng thái của một đối tượng, vv phụ thuộc vào việc cài đặt của bạn.

Lợi ích của phương thức toString() trong java

Bằng việc ghi đề phương thức toString() của lớp Object, chúng ta có thể trả về giá trị của đối tượng.

Vấn đề khi không sử dụng phương thức toString()

Ví dụ:

package com.hiepsiit.string;

public class Student {

	int rollno;
    String name;
    String city;
 
    Student(int rollno, String name, String city) {
        this.rollno = rollno;
        this.name = name;
        this.city = city;
    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student s1 = new Student(101, "Viet", "HaNoi");
        Student s2 = new Student(102, "Nam", "DaNang");
 
        System.out.println(s1);// compiler writes here s1.toString()
        System.out.println(s2);// compiler writes here s2.toString()
	}

}

Kết quả:

Khi ghi đề phương thức toString()

Ví dụ:

package com.hiepsiit.string;

public class Student {

	int rollno;
    String name;
    String city;
 
    Student(int rollno, String name, String city) {
        this.rollno = rollno;
        this.name = name;
        this.city = city;
    }
 
    public String toString() {//Ghi đè phương thức toString()
        return rollno + " " + name + " " + city;
    }
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Student s1 = new Student(101, "Viet", "HaNoi");
        Student s2 = new Student(102, "Nam", "DaNang");
 
        System.out.println(s1);// compiler writes here s1.toString()
        System.out.println(s2);// compiler writes here s2.toString()
	}

}

Kết quả:

StringTokenizer trong java

StringTokenizer trong java

Lớp java.util.StringTokenizer cho phép bạn phân tách một chuỗi thành các phần tử token của nó.

Các constructor của lớp StringTokenizer

Constructor Mô tả
StringTokenizer(String str) tạo ra một lớp StringTokenizer với chuỗi chỉ định.
StringTokenizer(String str, String delim) tạo ra một lớp StringTokenizer dựa trên chuỗi chỉ định và dấu phân cách.
StringTokenizer(String str, String delim, boolean returnValue) tạo ra một lớp StringTokenizer dựa trên chuỗi định, dấu phân cách và cờ hiệu. Nếu cờ hiệu là true, dấu phân cách được xem như là các phần tử token. Nếu là false, dấu phân cách không được tính là các phần tử token.

Các phương thức của lớp StringTokenizer

Các phương thức non-private của lớp StringTokenizer được tóm tắt trong bảng sau:

Phương thức Public Mô tả
boolean hasMoreTokens() Trả về true nếu còn nhiều token trong chuỗi.
String nextToken() Trả về token tiếp theo khi duyệt đối tượng StringTokenizer.
String nextToken(String delim) Trả về token tiếp theo dựa trên dấu phân tách.
boolean hasMoreElements() Giống như phương thức hasMoreTokens().
Object nextElement() Giống như nextToken() nhưng nó trả về một đối tượng.
int countTokens() Trả về tổng số lượng của các token.

Các ví dụ về StringTokenizer trong java

Dấu phân tách mặc định là 1 khoẳng trắng.

Ví dụ 1

import java.util.StringTokenizer;

public class StringTokenizerSample1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringTokenizer st = new StringTokenizer("Tôi họ Thích tên đầy đủ của tôi là Thích Học Lại");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
	}

}

Kết quả:

Ví dụ 2

import java.util.StringTokenizer;

public class StringTokenizerSample2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringTokenizer st = new StringTokenizer("Tôi-tên-là-ThichHocLai", "-");
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
	}

}

Kết quả:

Ví dụ 3

import java.util.StringTokenizer;

public class StringTokenizerSample3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringTokenizer st = new StringTokenizer("Tôi-tên-,là-ThichHocLai", "-,", false);
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
	}

}

Kết quả:

Ví dụ 4

import java.util.StringTokenizer;

public class StringTokenizerSample4 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringTokenizer st = new StringTokenizer("Tôi-tên-,là-ThichHocLai", "-,", true);
        while (st.hasMoreTokens()) {
            System.out.println(st.nextToken());
        }
	}

}

Kết quả:

Ví dụ 5

import java.util.StringTokenizer;

public class StringTokenizerSample5 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		StringTokenizer st = new StringTokenizer("Tôi-tên-,là-ThichHocLai", "-,", true);
		 
        // in next token dựa trên dấu phân cách
        System.out.println("Next token là : " + st.nextToken("-,"));
	}

}

Kết quả:

Phương thức charAt trong Java String

Phương thức charAt trong Java String

Phương thức charAt() trả về giá trị Char của chuỗi tại vị trí có chỉ số index được chỉ định được chỉ định. Index bắt đầu từ 0.

Cú pháp:

public char charAt(int index)

Ví dụ:

public class CharAtExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name = "hello java";
        char ch = name.charAt(4);
        System.out.println(ch);
	}

}

Kết quả:

Phương thức compareTo trong Java String

Phương thức compareTo trong Java String

Phương thức compareTo() so sánh các chuỗi cho trước với chuỗi hiện tại theo thứ tự từ điển. Nó trả về số dương, số âm hoặc 0.

Nếu chuỗi đầu tiên lớn hơn chuỗi thứ hai, nó sẽ trả về số dương (chênh lệch giá trị ký tự). Nếu chuỗi đầu tiên nhỏ hơn chuỗi thứ hai, nó sẽ trả về số âm và nếu chuỗi đầu tiên là bằng chuỗi thứ hai, nó trả về 0.

Cú pháp:

public int compareTo(String anotherString)

Ví dụ:

public class LastIndexOfExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hello";
        String s2 = "hello";
        String s3 = "meklo";
        String s4 = "hemlo";
        System.out.println(s1.compareTo(s2));
        System.out.println(s1.compareTo(s3));
        System.out.println(s1.compareTo(s4));
	}

}

Kết quả:

Phương thức concat trong Java String

Phương thức concat trong Java String

Phương thức concat() nối thêm chuỗi được chỉ định vào cuối chuỗi đã cho.

Cú pháp:

public String concat(String anotherString)

Ví dụ:

public class ConcatExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java string";
        s1.concat("is immutable");
        System.out.println(s1);
        s1 = s1.concat(" is immutable so assign it explicitly");
        System.out.println(s1);
	}

}

Kết quả:

Phương thức contains trong Java String

Phương thức contains trong Java String

Phương thức contains() tìm kiếm chuỗi ký tự trong chuỗi này. Nó trả về true nếu chuỗi các giá trị char được tìm thấy trong chuỗi này, nếu không trả về false.

Cú pháp:

public boolean contains(CharSequence sequence)  

Ví dụ:

public class ContainsExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name = "what do you know about me";
        System.out.println(name.contains("do you know"));
        System.out.println(name.contains("about"));
        System.out.println(name.contains("hello"));
	}

}

Kết quả:

Phương thức endsWith trong Java String

Phương thức endsWith trong Java String

Phương thức endsWith() kiểm tra nếu chuỗi này kết thúc với hậu tố nhất định. Nó trả về true nếu chuỗi này kết thúc với hậu tố đã cho, nếu khác thì trả về false.

Cú pháp:

public boolean endsWith(String suffix)

Ví dụ:

public class EndsWithExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hello java";
        System.out.println(s1.endsWith("t"));
        System.out.println(s1.endsWith("java"));
	}

}

Kết quả:

Phương thức equals trong Java String

Phương thức equals trong Java String

Phương thức equals() so sánh hai chuỗi đưa ra dựa trên nội dung của chuỗi. Nếu hai chuỗi khác nhau nó trả về false. Nếu hai chuỗi bằng nhau nó trả về true.

Phương thức equals() của lớp String được ghi đè từ phương thức equals() của lớp Object.

Phương thức:

public boolean equals(Object anotherObject)

Ví dụ:

public class EqualsExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java";
        String s2 = "java";
        String s3 = "JAVA";
        String s4 = "python";
        System.out.println(s1.equals(s2));
        System.out.println(s1.equals(s3));
        System.out.println(s1.equals(s4));
	}
	
}

Kết quả:

Phương thức equalsIgnoreCase trong Java String

Phương thức equalsIgnoreCase trong Java String

Phương thức equalsIgnoreCase() so sánh hai chuỗi đưa ra dựa trên nội dung của chuỗi không phân biệt chữ hoa và chữ thường. Nếu hai chuỗi khác nhau nó trả về false. Nếu hai chuỗi bằng nhau nó trả về true.

Cú pháp:

public boolean equals(Object anotherObject)

Ví dụ:

public class EqualsExample01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java";
        String s2 = "java";
        String s3 = "JAVA";
        String s4 = "python";
        System.out.println(s1.equalsIgnoreCase(s2));
        System.out.println(s1.equalsIgnoreCase(s3));
        System.out.println(s1.equalsIgnoreCase(s4));
	}

}

Kết quả:

Phương thức format trong Java String

Phương thức formart trong Java String

Phương thức formart() trả về một chuỗi được format theo miền địa phương.

Nếu bạn không chỉ định miền địa phương trong phương thức String.format(), nó sử dụng miền mặc bằng cách gọi phương thức Locale.getDefault().

Phương thức format() của ngôn ngữ java là giống như hàm sprintf() trong C và printf() trong Java.

Phương thức:

public static String format(String format, Object... args)
public static String format(Locale locale, String format, Object... args)

Ví dụ:

public class FormatExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String name = "sonoo";
        String sf1 = String.format("name is %s", name);
        String sf2 = String.format("value is %f", 32.33434);
        String sf3 = String.format("value is %32.12f", 32.33434);
 
        System.out.println(sf1);
        System.out.println(sf2);
        System.out.println(sf3);
	}

}

Kết quả:

Phương thức getBytes trong Java String

Phương thức getBytes trong Java String

Phương thức getBytes() trả về mảng byte của chuỗi.

Phương thức:

public byte[] getBytes()  
public byte[] getBytes(Charset charset)  
public byte[] getBytes(String charsetName)throws UnsupportedEncodingException  

Ví dụ:

public class StringGetBytesExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "ABCDEFG";
        byte[] barr = s1.getBytes();
        for (int i = 0; i < barr.length; i++) {
            System.out.println(barr[i]);
        }
	}

}

Kết quả:

Phương thức getChars trong Java String

Phương thức getChars trong Java String

Phương thức getChars() sao chép nội dung của chuỗi thành mảng Char cụ thể. Có 4 đối số truyền vào phương thức getChars().

Phương thức:

public void getChars(int srcBeginIndex, int srcEndIndex, char[] destination, int dstBeginIndex)

Ví dụ:

public class StringGetCharsExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String str = new String("hello Java how are you?");
        char[] ch = new char[4];
        try {
            str.getChars(6, 10, ch, 0);
            System.out.println(ch);
        } catch (Exception ex) {
            System.out.println(ex);
        }
	}

}

Kết quả:

Phương thức indexOf trong Java String

Phương thức indexOf trong Java String

Phương thức indexOf() trả về chỉ số của giá trị ký tự đã cho hoặc chuỗi con. Nếu không tìm thấy trả lại giá trị -1. Chỉ số (index) được đếm từ 0.

Phương thức:

int indexOf(int ch) //Trả về vị trị của giá trị Char đã cho.
int indexOf(int ch, int fromIndex) //Trả về vị trị của giá trị Char đã cho tính từ vị trí fromIndex.
int indexOf(String substring) //Trả về vị trị của chuỗi con.
int indexOf(String substring, int fromIndex) //Trả về vị trị của chuỗi con đã cho tính từ vị trí fromIndex.

Ví dụ:

public class IndexOfExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "this is index of example";
        
        //Truyền vào chuỗi con
        int index1 = s1.indexOf("is");
        int index2 = s1.indexOf("index");
        System.out.println(index1 + "  " + index2);//2 8  
 
        //Truyền vào chuỗi con và chỉ số bắt đầu
        int index3 = s1.indexOf("is", 4);
        System.out.println(index3);//5
 
        //Truyền vào giá trị Char
        int index4 = s1.indexOf('s');
        System.out.println(index4);//3
	}

}

Kết quả:

Phương thức intern trong Java String

Phương thức intern trong Java String

Phương thức intern() có thể được sử dụng để trả về chuỗi từ Pool chứa hằng số chuỗi khi nó được tạo bởi từ khóa new.

Phương thức:

public String intern()

Ví dụ:

public class InternExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = new String("hello");
        String s2 = "hello";
        String s3 = s1.intern();//trả về chuỗi từ Pool
        System.out.println(s1 == s2);//false vì reference là khác nhau
        System.out.println(s2 == s3);//true vì reference là giống nhau
	}

}

Kết quả:

Phương thức isEmpty trong Java String

Phương thức isEmpty trong Java String

Phương thức isEmpty() khi chuỗi trống trả về true, ngược lại trả về false.

Phương thức isEmpty() của lớp String được tích hợp từ phiên bản JDK 1.6.

Phương thức:

public boolean isEmpty()

Ví dụ:

public class IsEmptyExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "";
        String s2 = "hello java";
 
        System.out.println(s1.isEmpty());
        System.out.println(s2.isEmpty());
	}

}

Kết quả:

Phương thức join trong Java String

Phương thức join trong Java String

Phương thức join() trả về một chuỗi được nối với nhau bởi dấu phân tách. Trong phương thức join chuỗi, dấu phân cách được sử dụng cho mỗi chuỗi được nối. Trong trượng hợp chuỗi = null, giá trị “null” được thêm vào. Phương thức join() được tích hợp từ JDK 1.8

Có 2 dạng của phương thức join().

Phương thức:

public static String join(CharSequence delimiter, CharSequence... elements)  
public static String join(CharSequence delimiter, Iterable<? extends CharSequence> elements)

Ví dụ:

public class StringJoinExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String joinString1 = String.join("-", "welcome", "to", "java");
        System.out.println(joinString1);
	}

}

Kết quả:

Phương thức lastIndexOf trong Java String

Phương thức lastIndexOf trong Java String

Phương thức lastIndexOf() trả vể chỉ số cuối của ký tự hoặc chuỗi con. Nếu không tìm thấy trả về -1. Giá trị index được tính từ 0.

Phương thức:

int lastIndexOf(int ch)
int lastIndexOf(int ch, int fromIndex)
int lastIndexOf(String substring)
int lastIndexOf(String substring, int fromIndex)

Ví dụ:

public class LastIndexOfExample01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "this is index of example";
        int index1 = s1.lastIndexOf('s');
        int index2 = s1.lastIndexOf("ex");
        System.out.println(index1);//6 
        System.out.println(index2);//17
	}

}

Kết quả:

Phương thức length trong Java String

Phương thức length trong Java String

Phương thức length () trả về độ dài của chuỗi (tổng số ký tự theo mã unicode).

Phương thức:

public int length() 

Ví dụ:

public class LengthExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java";
        String s2 = "python";
        System.out.println("string length is: " + s1.length());
        System.out.println("string length is: " + s2.length());
	}

}

Kết quả:

Phương thức replace trong Java String

Phương thức replace trong Java String

Phương thức replace() được sử dụng để thay thế tất cả các ký tự hoặc chuỗi cũ thành ký tự hoặc chuỗi mới.

Phương thức replace() được tích hợp từ JDK 1.5.

Phương thức:

public String replace(char oldChar, char newChar)  
public String replace(CharSequence target, CharSequence replacement)

Ví dụ 1:

public class ReplaceExample1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hiepsiit.com is a very good website";
        String replaceString = s1.replace('t', 'j');//thay thế tất cả ký tự 't' thành 'j'  
        System.out.println(replaceString);
	}

}

Kết quả:

Ví dụ 2:

public class ReplaceExample2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "my name is hoclai my name is java";
        String replaceString = s1.replace("is", "was");//thay thế tất cả chuỗi "is" to "was"  
        System.out.println(replaceString);
	}

}

Kết quả:

Phương thức replaceAll trong Java String

Phương thức replaceAll trong Java String

Phương thức replaceAll() trả về một chuỗi thay thế tất cả các chuỗi ký tự phù hợp với regex.

Phương thức:

public String replaceAll(String regex, String replacement)

Ví dụ 1:

public class ReplaceAllExample1 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hiepsiit.com is a very good website";
        String replaceString = s1.replaceAll("t", "j"); //thay the "a" thanh "e"  
        System.out.println(replaceString);
	}

}

Kết quả:

Ví dụ 2:

public class ReplaceAllExample2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "My name is HocLai. \nMy name is NoMon. \nMy name is TinChi.";
        String replaceString = s1.replaceAll("is", "was"); // thay the tat ca cac chuoi "is" thanh "was"
        System.out.println(replaceString);
	}

}

Kết quả:

Ví dụ 3:

public class ReplaceAllExample3 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "My name is HocLai. \nMy name is NoMon. \nMy name is TinChi.";
        String replaceString = s1.replaceAll("\\s", "-"); // thay the khoang trang thanh "-"
        System.out.println(replaceString);
	}

}

Kết quả:

Phương thức split trong Java String

Phương thức split trong Java String

Phương thức split() tách chuỗi này theo biểu thức chính quy(regular expression) và trả về mảng chuỗi.

Phương thức:

public String split(String regex)
public String split(String regex, int limit)

Ví dụ 1:

public class SplitExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java string split method by hiepsiit.com";
        String[] words = s1.split("\\s");//tach chuoi dua tren khoang trang
        //su dung vong lap foreach de in cac element cua mang chuoi thu duoc
        for (String w : words) {
            System.out.println(w);
        }
	}

}

Kết quả:

Ví dụ 2:

public class SplitExample2 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "welcome to split world";
        System.out.println("returning words:");
        for (String w : s1.split("\\s", 0)) {
            System.out.println(w);
        }
        System.out.println("returning words:");
        for (String w : s1.split("\\s", 1)) {
            System.out.println(w);
        }
        System.out.println("returning words:");
        for (String w : s1.split("\\s", 2)) {
            System.out.println(w);
        }
	}

}

Kết quả:

Phương thức startsWith trong Java String

Phương thức startsWith trong Java String

Phương thức startsWith() được sử dụng để kiểm tra tiền tố của chuỗi có khớp với giá trị tiền tố đã nhập không, nếu đúng trả về true, sai trả về false.

Cú pháp:

public boolean startsWith(String prefix)  
public boolean startsWith(String prefix, int offset)

Ví dụ:

public class StartsWithExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "java string startsWith() method sample";
        System.out.println(s1.startsWith("ja"));
        System.out.println(s1.startsWith("java string"));
	}

}

Kết quả:

Phương thức subString trong Java String

Phương thức subString trong Java String

Phương thức subString() trả về chuỗi con của một chuỗi.

Chúng ta truyền chỉ số bắt đầu và chỉ số kết thúc cho phương thức subString(), với chỉ số bắt đầu tính từ 0 và chỉ số kết thúc tính từ 1.

Cú pháp:

public String substring(int startIndex) 
public String substring(int startIndex, int endIndex)

Ví dụ phương thức subString trong Java String:

public class SubstringExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hellojava";
        System.out.println(s1.substring(3, 7));// "loja"  
        System.out.println(s1.substring(3));// "lojava"  
	}

}

Kết quả:

Phương thức toCharArray trong Java String

Phương thức toCharArray trong Java String

Phương thức toCharArray() được sử dụng để chuyển đổi chuỗi thành các mảng ký tự. Nó trả về một mảng ký từ có độ dài tương đương độ dài của chuỗi.

Cú pháp:

public char[] toCharArray()

Ví dụ phương thức toCharArray trong Java String:

public class StringToCharArrayExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "hello";
        char[] ch = s1.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            System.out.println(ch[i]);
        }

	}

}

Kết quả:

Phương thức toLowerCase trong Java String

Phương thức toLowerCase trong Java String

Phương thức toLowerCase() được sử dụng để chuyển chuỗi về dạng chữ thường.

Phương thức toLowerCase() hoạt động giống y chang phương thức toLowerCase(Locale.getDefault()). Nó sử dụng locale mặc định.

Cú pháp:

public String toLowerCase()  
public String toLowerCase(Locale locale)

Ví dụ phương thức toLowerCase trong Java String:

public class StringLowerExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "HELLO stRIng";
        String s1lower = s1.toLowerCase();
        System.out.println(s1lower);
	}

}

Kết quả:

Phương thức toUpperCase trong Java String

Phương thức toUpperCase trong Java String

Phương thức toUpperCase() được sử dụng để chuyển chuỗi về dạng chữ hoa.

Phương thức toUpperCase() hoạt động giống y chang phương thức toUpperCase(Locale.getDefault()). Nó sử dụng locale mặc định.

Cú pháp:

public String toLowerCase()  
public String toLowerCase(Locale locale)

Ví dụ phương thức toUpperCase trong Java String:

public class StringLowerExample01 {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "HELLO stRIng";
        String s1Upper = s1.toUpperCase();
        System.out.println(s1Upper);
	}

}

Kết quả:

Phương thức trim trong Java String

Phương thức trim trong Java String

Phương thức trim() được sử dụng để xóa khoảng trẳng ở đầu và cuối chuỗi. Giá trị unicode của khoảng trắng là ‘\u0020’. Phương thức trim() kiểm tra giá trị unicode trước và sau chuỗi, nếu tồn tại thì xóa bỏ khoảng trắng đi và trả về chuỗi không có khoảng trắng ở đầu và cuối.

Cú pháp:

public String trim()

Ví dụ phương thức trim trong Java String:

public class StringTrimExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		String s1 = "  hello string   ";
        System.out.println(s1 + "java"); 
        System.out.println(s1.trim() + "java");
	}

}

Kết quả:

Phương thức valueOf trong Java String

Phương thức valueOf trong Java String

Phương thức valueOf() được sử dụng để chuyển đối kiểu dữ liệu khác thành chuỗi. Bằng việc sử dụng phương thức valueOf(), bạn có thể chuyển int thành chuỗi, long thành chuỗi, boolean thành chuỗi, float thành chuỗi, double thành chuỗi, char thành chuỗi, mảng char thành chuỗi, đối tượng thành chuỗi.

Cú pháp:

public String trim()

Ví dụ phương thức valueOf trong Java String:

public class StringValueOfExample {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int value = 30;
        String s1 = String.valueOf(value);
        System.out.println(s1 + 10);
	}

}

Kết quả: