Nội dung bài viết
Đăng ký học lập trình C++
Tại STDIO bạn được dạy nền tảng lập trình tốt nhất.
Đăng ký học
Kiểu String trong Java là một trong những kiểu dữ liệu quan trọng. Bài viết giới thiệu về String trong Java và các thao tác trên chúng.

Giới thiệu

Kiểu String (dịch là kiểu chuỗi, từ đây về sau sẽ sử dụng từ kiểu chuỗi thay cho kiểu String) là kiểu dữ liệu quan trọng với các lập trình viên. Tuy nhiên, với mỗi ngôn ngữ lập trình, cách hiện thực hóa kiểu chuỗi có một vài điểm khác nhau. Trong bài viết này, xin được giới thiệu về kiểu chuỗi và kỹ thuật thao tác với chuỗi trong ngôn ngữ lập trình Java.

Tiền đề bài viết

Bài viết nằm trong chủ đề Java của STDIO, với mong muốn hỗ trợ những người đang tìm hiểu về ngôn ngữ lập trình Java.

Đối tượng hướng đến

Đối tượng hướng đến là các lập trình viên đang tìm hiểu về ngôn ngữ lập trình Java, có kiến thức cơ bản về lập trình C/C++ là một lợi thế.

Kiểu chuỗi trong Java

Khái niệm

Chuỗi trong Java là một dãy các ký tự Unicode 16 bit.

Ví dụ: Chuỗi “STDIO” là một dãy gồm các kí tự S, T, D, I, O. Mỗi một kí tự là một dãy nhị phân 16 bit.

Đặc điểm

Chuỗi trong Java là một đối tượng. Các thao tác với chuỗi phải thông qua giao diện của lớp String (có thể sử dụng lớp StringBuffer hoặc StringBuilder thay cho String).

Chuỗi trong Java là immutable. Nghĩa là giá trị của chuỗi là không thể thay đổi. Việc này đảm bảo tính toàn vẹn dữ liệu cho lập trình đa luồng (multi thread).

Từ bản Java 5 trở đi, chuỗi trong Java đã hỗ trợ cơ chế mutable thông qua lớp StringBuffer và StringBuilder.

Cơ chế Immutable

Xét 1 đoạn mã nguồn đơn giản sau:

package TestString;

import java.lang.String;

public class main {
	
	public static void main(String[] args) {
		
		String s = "STDIO";
		s = s.concat("-LAPTRINHJAVA"); 	// Concatenate 2 strings

	}
}

Theo dõi đoạn mã tạo ra chuỗi s = "STDIO". Sau đó, dùng hàm concat để thay đổi nội dung của chuỗi thành “STDIO-LAPTRINHJAVA” (nối chuỗi “–LAPTRINHJAVA” vào chuỗi s).

Hình ảnh minh họa:

Bước 1:

String s = "STDIO";

ss_1

Bước 2:

s = s.concat("-LAPTRINHJAVA");

Sự thay đổi nội dung của chuỗi sẽ tạo ra chuỗi mới chứ không thay đổi chuỗi gốc hiện tại.

Sau đó tham chiếu đến chuỗi cũ sẽ thay đổi thành tham chiếu đến chuỗi mới.

Cơ chế này trong chuỗi gọi là Immutable.

ss_2

Lớp String và các phương thức thông dụng

Java hỗ trợ các thao tác với chuỗi thông qua lớp String. Lớp này nằm trong gói java.lang.

Trong quá trình sử dụng, bạn phải import gói java.lang theo cú pháp sau:

import java.lang.String;

Hoặc:

import java.lang.*;

Lớp String hỗ trợ hơn 50 hàm để thao tác với kiểu chuỗi. Sau đây chúng ta sẽ đi tìm hiểu chức năng của một số hàm thông dụng:

STT

Nguyên mẫu hàm

Chức năng

1

public char charAt(int s);

Trả về kí tự có chỉ số là i trong chuỗi cần tìm.

2

public String concat(String s2);

Trả về chuỗi đã được nối thêm vào chuỗi s2. s2 sẽ được nối vào sau chuỗi gọi hàm.

3

public boolean equals(String s2);

Trả về true nếu giá trị của chuỗi s2 bằng giá trị chuỗi đang xét, trả về false nếu ngược lại. Phân biệt chữ hoa và chữ thường trong khi so sánh.

4

public boolean equalsIgnoreCase(String s2);

Trả về true nếu giá trị của chuỗi s2 bằng giá trị chuỗi đang xét, trả về false nếu ngược lại. KHÔNG phân biệt chữ hoa và chữ thường trong khi so sánh.

5

public int length();

Trả về độ dài của chuỗi đang xét.

6

public String replace(char oldChar, char newChar);

Thay thế kí tự oldChar bằng kí tự newChar.

7

public String substring(int begin);

public String substring(int begin);

Lấy ra chuỗi con từ vị trí begin đến hết chuỗi, hoặc từ vị trí begin đến vị trí end.

8

public int indexOf(String str);

Kiểm tra sự tồn tại của chuỗi str trong chuỗi đang xét. Nếu có, trả về vị trí đầu tiên của sự xuất hiện. Nếu không trả về -1.

9

public String toUpperCase();

Chuyển tất cả kí tự trong chuỗi đang xét thành kí tự hoa.

10

public String toLowerCase();

Chuyển tất cả kí tự trong chuỗi đang xét thành kí tự thường.

11

public String toString();

Trả về giá trị của chuỗi đang xét. Trong một vài trường hợp, bạn có thể override lại để sử dụng đúng mục đích.

12

public String trim();

Trả về chuỗi đã được loại bỏ khoảng trắng.

Dưới đây là một ví dụ về việc sử dụng một số hàm thông dụng trong Java. Khi sử dụng, hãy lưu ý đến kiểu trả về và đối số truyền vào hàm để có kết quả chính xác.

package TestString;

import java.lang.*;

public class main {
	
	public static void main(String[] args) {
		
		String s = "STDIO";
		
		// Access a single character at specific index
		System.out.println("1. s[3] = " + s.charAt(3));
		
		// Concatenate 2 strings
		System.out.println("2. Concatenate 2 strings: ");
		s = s.concat("-LAPTRINHJAVA");
		System.out.println(s);
		
		// Compare 2 strings
		if(s.equals("Im Michael"))
			System.out.println("3. Equal strings!");
		else
			System.out.println("3. Not equal strings!");
		
		// Get length of string
		System.out.println("4. Length of s: " + s.length());
		
		// Replace characters from string
		System.out.println("5. Replacing - by _ from s: " + s.replace('-', '_'));	
	}
}
THẢO LUẬN