TỔNG QUAN
CẤU TRÚC ĐIỀU KHIỂN
VÒNG LẶP
CHUỖI VÀ MẢNG
COLLECTIONS
THƯ VIỆN QUAN TRỌNG
HƯỚNG ĐỐI TƯỢNG
XỬ LÝ LUỒNG
EXCEPTION
LÀM VIỆC VỚI FILE
THAM KHẢO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Chuỗi (String) trong Java

Trong chương này, chúng ta sẽ cùng nhau tìm hiểu về 2 khái niệm chuỗi và mảng trong Java. Đối với các ngôn ngữ lập trình, chuỗi và mảng là 2 kiểu dữ liệu rất quan trọng. Trong bài đầu tiên của chương này, tôi sẽ giới thiệu đến các bạn kiểu dữ liệu đầu tiên đó là kiểu dữ liệu chuỗi. Trong ngôn ngữ lập trình Java, chuỗi được coi là 1 dữ liệu dạng đối tượng (tức là nó có các thuộc tính và phương thức - chi tiết về đối tượng chúng ta sẽ được học trong chương Lập trình hướng đối tượng).

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

1. Khai báo chuỗi ký tự

Trong Java, để khai báo 1 chuỗi ký tự thì chúng ta có 2 cách như sau:

Cách 1:

Cú pháp
String tenChuoi = "giá_trị_khởi_tạo";

trong đó, giá_trị_khởi_tạo của chuỗi có thể có hoặc không và nếu có thì phải đặt trong cặp dấu " ". Nếu một chuỗi có giá_trị_khởi_tạo = " " thì chuỗi đó được gọi là chuỗi rỗng.

Bài viết này được đăng tại [free tuts .net]

Ví dụ
public static void main(String[] args) {
	// khai báo chuỗi rỗng
	String chuoi1 = "";
		
	// khai báo chuỗi có nội dung là "Welcome"
	String chuoi2 = "Welcome";
		
	// hiển thị giá trị của 2 chuỗi trên ra màn hình
	System.out.println("Chuỗi rỗng có giá trị = " + chuoi1);
	System.out.println("Chuỗi 2 có giá trị = " + chuoi2);
}
Kết quả sau khi biên dịch chương trình:

ketqua khaibaochuoi1 PNG

Cách 2: Sử dụng từ khóa new.

Cú pháp
String tenChuoi = new String("giá_trị");
trong đó giá_trị là một chuỗi bất kỳ và phải đặt trong cặp dấu " ".

Ví dụ
public static void main(String[] args) {
	// khai báo một chuỗi có nội dung là "Welcome to Java!"
	String chuoi = new String("Welcome to Java!");
	System.out.println(chuoi);
}

Kết quả sau khi biên dịch chương trình:

ketqua khaibaochuoi2 PNG

2. Các hàm xử lý chuỗi ký tự

Hàm xác định độ dài chuỗi ký tự

Cú pháp
int length = tên_chuỗi.length();

Chức năng: Hàm trả về độ dài chuỗi ký tự bằng cách đếm các ký tự trong chuỗi.

Ví dụ
public static void main(String[] args) {
	String chuoi;
	int doDai;
	Scanner scanner = new Scanner(System.in);
		
	System.out.println("Nhập vào chuỗi bất kỳ từ bàn phím: ");
	chuoi = scanner.nextLine();
		
	// tính độ dài chuỗi
	doDai = chuoi.length();
		
	System.out.println("Chuỗi " + chuoi + " có độ dài = " + doDai);
}
Kết quả sau khi biên dịch chương trình:

ketqua tinhdodaichuoi PNG

Hàm nối 2 chuỗi ký tự

Trong Java, để nối 2 chuỗi ký tự lại với nhau thì chúng ta có 2 cách. Cách thứ nhất là chúng ta dùng dấu + để nối chuỗi (cách này tôi đã đề cập trong các bài trước) và cách thứ hai là dùng phương thức concat()

Cú pháp
String string3 = string1.concat(String string2);

Chức năng: Hàm có tác dụng nối chuỗi string2 vào string1 và trả về chuỗi string3.

Ví dụ
public static void main(String[] args) {
	String chuoi1 = "Happy ", chuoi2 = "new year!";

	/* 
	 * nối chuỗi
	 */
	String chuoi3 = chuoi1.concat(chuoi2);
	System.out.println(chuoi3);	
}
Kết quả sau khi biên dịch chương trình:

ketqua noichuoi PNG

Hàm trả về một ký tự trong chuỗi.

Lưu ý: Một chuỗi là tập hợp các ký tự và ký tự đầu tiên trong chuỗi sẽ có chỉ số (index) là 0. Ví dụ: một chuỗi có chiều dài là 10 thì chỉ số của các ký tự trong chuỗi đó sẽ được đánh số từ 0 đến 9.

Cú pháp
char character = chuoi.charAt(int index);

Chức năng: Hàm trả về ký tự character trong chuỗi có chỉ số là index.

Ví dụ
public static void main(String[] args) {
	String chuoi = "Happy new year!";
		
	/* 
	 * trả về ký tự có chỉ số là 4 trong chuỗi
	 * ký tự 'H' có chỉ số là 0 
	 * nên ký tự có chỉ số 4 là ký tự 'y'
	 */
	char character = chuoi.charAt(4);
	System.out.println(character);
}

Kết quả sau khi biên dịch chương trình:

ketqua kytutaivitriindex PNG

Hàm so sánh 2 chuỗi ký tự

Cú pháp
int result = string1.compareTo(String string2);
Chức năng: Hàm có tác dụng so sánh hai chuỗi string1, string2 và trả về kết quả:

Nếu result = 0 thì hai chuỗi đó bằng nhau.

Nếu result < 0 thì chuỗi string1 < string2.

Nếu result > 0 thì chuỗi string1 > string2.

Ví dụ
public static void main(String[] args) {
	int result;
	String string1 = "Happy new year!";
	String string2 = "Happy new year!";
		
	result = string1.compareTo(string2);
	if (result == 0) {
		System.out.println("Chuỗi " + string1 + " = " + string2);
	} else if (result < 0) {
		System.out.println("Chuỗi " + string1 + " < " + string2);
	} else {
		System.out.println("Chuỗi " + string1 + " > " + string2);
	}
}
Kết quả sau khi biên dịch chương trình:

ketqua sosanhchuoi PNG

Hàm trả về vị trí xuất hiện đầu tiên của một chuỗi trong chuỗi khác.

Cú pháp
int result = string1.indexOf(String string2);

Chức năng: Hàm trả về vị trí xuất hiện đầu tiên của chuỗi string2 trong string1. Nếu chuỗi string2 không có trong chuỗi string1 thì kết quả trả về result = -1.

Ví dụ
public static void main(String[] args) {
	int result;
	String string1 = "Happy new year!";
	String string2 = "new year!";
		
	result = string1.indexOf(string2);
	System.out.println("Vị trí đầu tiên xuất hiện chuỗi " + string2 + 
		" trong chuỗi " + string1 + " = " + result);
}
Kết quả sau khi biên dịch chương trình:

ketqua timvitrixuathiencuachuoi PNG

 

Hàm trả về vị trí xuất hiện cuối cùng của một chuỗi trong chuỗi khác.

Cú pháp
int result = string1.lastIndexOf(String string2);
Chức năng: Hàm trả về vị trí xuất hiện cuối cùng của chuỗi string2 trong string1. Nếu chuỗi string2 không có trong chuỗi string1 thì kết quả trả về result = -1.

Ví dụ
public static void main(String[] args) {
	int result;
	String string1 = "Happy new year and new year!";
	String string2 = "new year!";
		
	result = string1.lastIndexOf(string2);
	System.out.println("Vị trí cuối cùng xuất hiện chuỗi " + string2 + 
		" trong chuỗi " + string1 + " = " + result);
}
Kết quả sau khi biên dịch chương trình:

ketqua timvitrixuathiencuoicungcuachuoi PNG

Hàm thay thế một chuỗi con trong chuỗi ký tự bằng chuỗi khác

Cú pháp
string1.replace(char oldChar, char newChar);

Chức năng: Hàm sẽ thay thế ký tự oldChar bằng ký tự newChar trong chuỗi string1. Nếu ký tự cần thay thế không có trong chuỗi string1 thì chương trình sẽ trả về chuỗi string1.

Ví dụ
public static void main(String[] args) {
	String string1 = new String("Happy new year!");
		
	// ký tự thay thế 'l' không có trong chuỗi string1
	System.out.println(string1.replace('l', 'r'));
		
	// thay thế ký tự 'y' trong string1 thành 'r'
	System.out.println("Chuỗi sau khi thay thế là " + 
		string1.replace('y', 'r'));
}

Kết quả sau khi biên dịch chương trình:

ketqua thaythechuoi PNG

Hàm loại bỏ các khoảng trắng thừa ở đầu và cuối chuỗi

Cú pháp
String string1 = string1.trim();
Chức năng: Hàm sẽ loại bỏ các khoảng trắng thừa ở đầu và cuối chuỗi string1. Nếu chuỗi đó không có khoảng trắng thừa thì chương trình sẽ trả về chuỗi gốc.

Ví dụ
public static void main(String[] args) {
	String string1 = new String("   Welcome to Freetuts.net!   ");
		
	// loại bỏ các khoảng trắng thừa trong chuỗi string1
	string1 = string1.trim();
		
	System.out.println("Chuỗi sau khi loại bỏ khoảng trắng thừa là " + string1);
}

Kết quả sau khi biên dịch chương trình:

ketqua loaibokhoangtrangthua PNG

Hàm tạo một chuỗi con từ vị trí index trong chuỗi cha

Cú pháp
String chuoiCon = chuoiCha.substring(int beginIndex);
String chuoiCon = chuoiCha.substring(int beginIndex, int endIndex);
Chức năng: Hàm sẽ tạo một chuỗi con từ vị trí có chỉ số là beginIndex trong chuỗi cha. Trong cú pháp thứ 2, thì hàm sẽ tạo một chuỗi con bắt đầu từ vị trí có chỉ số là beginIndex và kết thúc tại vị trí có chỉ số endIndex - 1 trong chuỗi cha.

Ví dụ
public static void main(String[] args) {
	String chuoiCha = new String("Welcome to Freetuts.net!");
		
	// tạo một chuỗi con từ vị trí 11 trong chuỗi string1
	String chuoiCon1 = chuoiCha.substring(11);	// Freetuts.net!
	System.out.println(chuoiCon1);
		
	/*
	 * tách một chuỗi con bắt đầu từ vị trí 11
	 * và kết thúc tại vị trí 19 trong chuỗi cha
	 */
	String chuoiCon2 = chuoiCha.substring(11, 19);	// Freetuts
	System.out.println(chuoiCon2);
}
Kết quả sau khi biên dịch chương trình:

ketqua taochuoicon PNG

3. Ví dụ về chuỗi

Ví dụ 1

Viết chương trình nhập từ bàn phím một chuỗi không quá 80 ký tự và một ký tự bất kỳ. Đếm và in ra màn hình số lần xuất hiện của ký tự đó trong chuỗi vừa nhập.

Bài giải
public static void main(String[] args) {
	String chuoi;
	char kyTu;
	int count = 0;
	Scanner scanner = new Scanner(System.in);
		
	// nếu độ dài chuỗi nhập vào còn lớn hơn 80 thì phải nhập lại
	do {
		System.out.println("Nhập vào 1 chuỗi bất kỳ: ");
		chuoi = scanner.nextLine();
	} while (chuoi.length() > 80);
		
	System.out.println("Nhập vào ký tự cần đếm số lần xuất hiện: ");
	kyTu = scanner.next().charAt(0);
		
	/*
	 * đếm và in ra số lần xuất hiện của ký tự đó trong chuỗi
	 * duyệt từ đầu đến cuối chuỗi
	 * nếu có ký tự nào tại vị trí i bằng với ký tự ch thì tăng biến count lên 1
	 */
	for (int i = 0; i < chuoi.length(); i++) {
		if (kyTu == chuoi.charAt(i)) {
			count++;
		}
	}
		
	System.out.println("Số lần xuất hiện của ký tự " + kyTu +
		" trong chuỗi " + chuoi + " = " + count);
}

Kết quả sau khi biên dịch chương trình:

ketqua demkytu PNG

Ví dụ 2

Viết chương trình nhập vào một chuỗi bất kỳ bao gồm cả số, ký tự thường và ký tự hoa từ bàn phím. Sau đó đếm và in ra số ký tự thường và ký tự hoa và số có trong chuỗi đó.

Bài giải
public static void main(String[] args) {
	String chuoi;
	int soKyTuInHoa = 0, soKyTuInThuong = 0, soChuSo = 0;
	Scanner scanner = new Scanner(System.in);
		
	// nếu độ dài chuỗi nhập vào còn lớn hơn 80 thì phải nhập lại
	do {
		System.out.println("Nhập vào 1 chuỗi bất kỳ: ");
		chuoi = scanner.nextLine();
	} while (chuoi.length() > 80);
		
	// đếm và in ra số lần xuất hiện của ký tự đó trong chuỗi
	// duyệt từ đầu đến cuối chuỗi
	// nếu có ký tự nào tại vị trí i bằng với ký tự ch thì tăng biến count lên 1
	for (int i = 0; i < chuoi.length(); i++) {
		// hàm isUpperCase() là hàm dùng để kiểm tra ký tự tại vị trí i
		// có phải là ký tự in hoa hay không.
		if (Character.isUpperCase(chuoi.charAt(i))) {
			soKyTuInHoa++;
		} 
			
		// hàm isLowerCase() là hàm dùng để kiểm tra ký tự tại vị trí i
		// có phải là ký tự in thường hay không.
		if (Character.isLowerCase(chuoi.charAt(i))) {
			soKyTuInThuong++;
		} 
			
		// hàm isDigit() là hàm dùng để kiểm tra ký tự tại vị trí i
		// có phải là số hay không.
		if (Character.isDigit(chuoi.charAt(i))) {
			soChuSo++;
		}
	}
		
	System.out.println("Trong chuỗi " + chuoi +
		" có " + soKyTuInHoa + " ký tự in hoa," +
		" có " + soKyTuInThuong + " ký tự in thường" +
		" và có " + soChuSo + " số.");
}
Kết quả sau khi biên dịch chương trình:

ketqua deminhoathuongso PNG

4. Lời kết

Đến đây, chúng ta đã kết thúc nội dung trong bài Chuỗi (String) trong Java. Sang bài sau, chúng ta sẽ bước sang tìm hiểu một khái niệm mới, đó là khái niệm Mảng (Array) trong Java và đầu tiên tôi sẽ hướng dẫn các bạn về mảng một chiều. Sau khi kết thúc các bài trong chương này, tôi sẽ đưa ra một số bài tập kết hợp giữa chuỗi và mảng để các bạn luyện tập. Các bạn theo dõi nhé!

 

Câu hỏi thường gặp liên quan:

Cùng chuyên mục:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top