Chuỗi là kiểu dữ liệu được sử dụng nhiều nhất trong lập trình. Mình sẽ cùng tìm hiểu về kiểu dữ liệu thú vị này nhé

Vậy chuỗi là gì ?

1. Khái niệm

Chuỗi hay String là một class được xây dựng sẵn trong Java. Chuỗi được sử dụng để lưu trữ văn bản.

String có rất nhiều phương thức giúp xử lý chuỗi một cách thuận tiện và hiệu quả.

Một biến chứa một tập hợp các ký tự được bao quanh bởi dấu ngoặc kép ví dụ như: "Tôi là Đang"

2. Khai báo chuỗi

Để khai báo một chuỗi, hãy khai báo như một biến có kiểu dữ liệu nguyên thủy :

Khai báo không khởi tạo giá trị

String myName;	
// Trong trường hợp này giá trị của myName được hiểu là "null"

Khai báo có khởi tạo giá trị

String myName = "Đang Hữu Trần"; 
// Trường hợp này giá trị của myName là: Đang Hữu Trần\n

3. Các tính chất

Ký tự đặc biệt

Chúng ta có thể kết hợp các ký tự đặc biệt trong câu lệnh print. Chú ý các kỹ tự khác Java sẽ hiểu như một ký tự bình thường trong bảng mã ASCII.

Các ký tự đặc biệt gồm:

Ký tựGiá trịDiễn giải
\tKý tự tabTheo quy ước: 1Tab = 3 khoảng trắng
\rVề đầu dòngTrở về đầu dòng
\nXuống dòngTương tự phím Enter hay ký tự \n
\\\Để hiện thị các ký tự đặc biệt bạn cần dùng \ ở trước
\""

Ví dụ:

System.out.print("\t+ Họ và tên: Đang\r\n\t+ Tuổi: 20");

/* 
		Output: + Họ và tên: Đang
			    + Tuổi: 20
*/			   

4. Các phương thức của Chuỗi

Java xây dựng cho chuỗi các phương thức có sẵng, bạn hoàn toàn có thê tự xây dựng các chức năng như vậy nhưng vì Java dùng để xây dựng các bài toán lớn nên việc dùng các phương thức dựng sẵng sép giúp tối ưu thời gian lập tình hơn.

Sau đây là các phương thức Java xâu dựng sẵng cho String gọi là String API

Phương thứcVí dụSử dụngKết quả
toLowerCase()s1 = "aBc"s2 = s1.toLowerCase()s2 = "abc"
toUpperCase()s1 = "aBc"s2 = s1.totoUpperCase()s2 = "ABC"
trim()s1 = " abc "s2 = s1.trim()s2 = "abc"
length()s1 = "abc"n = s1.length()n = 3
substring()s1 = "abc"s2 = s1.substring(1,2)s2 = "b"
s1 = "abc"s2 = s1.substring(0)s2 = "abc"
s1 = "abc"s2 = s1.substring(2)s2 = "c"
charAt (index)s1 = "abc"c = s1.charAt(1)c = 'b'
replaceAll(find, replace)s1 = "abcada"s2 = s1.replaceAll('a','z')s2 = "zbczdz"
split(separator)s1 = "a.cd.fgh"arr = s1.split(".")arr = ["a", "cd", "fgh"]

Dài quá mình tách làm 2 nha

Phương thứcVí dụSử dụngKết quả
equals()s1 = "aBc"; s2 = "abc"bl = s1.equals(s2)bl = false
equals()s1 = "aBc"; s2 = "aBc"bl = s1.equals(s2)bl = true
equalsIgnoreCase()s1 = "aBC"; s2 = "abc"bl = s1.equalsIgnoreCase(s2)bl = true
equalsIgnoreCase()s1 = "aBC"; s2 = "aBC"bl = s1.equalsIgnoreCase(s2)bl = true
contains()s1 = "abc"bl = s1.contains("bc")bl = true
startsWith()s1 = "abc"bl = s1.startsWith("ab")bl = true
endsWith()s1 = "abc"bl = s1.endsWith("bc")bl = true
matches()Xem thêmXem thêmXem thêm
indexOf()s1 = "abc"n = s1.indexOf("b")n = 1
s1 = "abc"n = s1.indexOf("a")n = 0
s1 = "abc"n = s1.indexOf("x")n = -1
lastIndexOf()s1 = "abc"n = s1.lastIndexOf("b")n = 1
s1 = "abc"n = s1.lastIndexOf("a")n = 0
s1 = "abc"n = s1.lastIndexOf("x")n = -1

Stringlength() còn Arrayslength


5. Xuất chuỗi

Bạn có thể xuất từng phần tử bằng cách Duyệt chuỗi hoặc xuất cả chuỗi bằng cách:

String myName = "Tran Huu Dang";
System.out.print("Tên tôi là: " + myName);

// Output: Tên tôi là: Tran Huu Dang

6. Duyệt chuỗi

Bạn có thể xem Chuỗi là một mảng ký tự, khi này:

  • Ký tự đầu của chuỗi cũng như mảng (nằm ở vị trí 0)
  • Ký tự cuối với Mảng là length còn chuỗi là length()

Bạn vẫn có thể dùng for hoặc forEach để duyệt chuỗi

Vòng lặp for

String myName = "Đang";
for(int i = 0 ; i < myName.length(); i++){
   System.out.print(myName.charAt(i) + " ");
	// charAt(i) sẽ trả về ký tự (char) tại vị trí i
}
//output : Đ a n g 

Vòng lặp forEach

String myName = "Đang";
for(char c : myName){
   System.out.print(c + " ");
}
//output : Đ a n g

7. Nối chuỗi

Bạn có thể tạo ra một chuỗi mới với hai chuỗi ban đầu bằng toán tử cộng (+) hay các phương thức bên trên

public class Main {
  public static void main(String[] args) {
    String first = "Đang học ";
    String last = "Java";
    System.out.println(firstName.concat(last));
  }
}

// Output: Đang học Java
public class Main {
  public static void main(String[] args) {
    String first = "Đang học ";
    String last = "Java";
    System.out.println(first + last);
  }
}
// Output: Đang học Java

8. Lưu ý

Chuỗi không thể thay đổi giá trị bằng phép gán như Mảng

Ví dụ

String name = "Đang";
name.charAt(0) = 'D';
// LỖI

Bạn không thể thực thi như thế được mà phải kết hợp các phương thức lại với nhau

9. Bài tập

9.1 Xuất tên chuẩn hóa cấp độ 1

Nhập vào họ tên một người, in hoa các ký tự đầu trong mỗi thành phần tên

Ví dụ: "trần hữu đang" ⟹ "Trần Hữu Đang" Nâng cấp: "tRầN hữU đAnG" ⟹ "Trần Hữu Đang"

Bài giải
  • Tự làm đi chòi 😆😆

9.2 Xuất tên chuẩn hóa cấp độ 2

Nhập vào họ tên một người, xóa các khoảng trắng thừa

Ví dụ: " trần hữu đang" ⟹ "Trần Hữu Đang" Nâng cấp: " tRầN hữU đAnG " ⟹ "Trần Hữu Đang"

Bài giải
  • Tự làm đi chòi 😆😆

9.3 Xuất tên chuẩn hóa cấp độ 3

Nhập vào họ tên một người, xóa các ký tự thừa

Ví dụ: " trầ35n $^ hữ%^99u đa498%%ng" ⟹ "Trần Hữu Đang"

Bài giải
  • Tự làm đi chòi 😆😆

9.4 Xuất tên chuẩn hóa cấp độ 4

Nhập vào họ tên một người, chuẩn hóa theo tiếng Việt

Ví dụ: " trrrrầnnnn hhữuuuu đaaang" ⟹ "Trần Hữu Đang"

Bài giải
  • Tự làm đi chòi 😆😆