Series bài giảng lớp luyện thi FE chuẩn kỹ sư CNTT Nhật Bản. Tổ giảng viên biên soạn giáo trình quyết định chia sẻ miễn phí. Nếu bạn sử dụng hãy ghi rõ nguồn từ Techmaster Việt nam.

Cần nhớ 👆

  • String: chuỗi các ký tự
  • Text: tương tự như String thường mô tả nội dung lớn hoặc nhiều dòng
  • Array of character: mảng các ký tự, thay đổi được từng phần tử, không thay đổi kích thước
  • String literal: nội dung chuỗi, thường là immutable
  • Quote: ký tự đặc biệt đánh dấu đầu và cuối string literal
  • Mutable string: chuỗi có nội dung thay đổi được
  • Immutable string: chuỗi không thể thay đổi nội dung sau khai báo
  • Length: số ký tự trong chuỗi
  • Size: dung lượng byte chuỗi chiếm
  • Single line string: chuỗi trên một dòng
  • Multiple line string: chuỗi trên nhiều dòng
  • Escaped character: mô tả ký tự đặc biệt trong chuỗi
  • Encoding: cách string literal lưu vào bộ nhớ (ASCII vs Unicode)
  • ASCII: bảng mã 256 ký tự (128 ký tự căn bản và 128 ký tự mở rộng)

(String) chuỗi được lưu trữ, thể hiện như thế nào?

Một chuỗi bao gồm các ký tự, dưới dạng không thể thay đổi (immutable) hoặc có thể thay đổi nội dung ký tự (mutable):

  • Constant string: khai báo 1 lần sau đó không thể thay đổi nội dung bên trong.
  • Variable string: khai báo 1 lần, sau đó có thể thay đổi nội dung, rút ngắn hoặc kéo dài…

String thường được mô phỏng như là một mảng mà mỗi phần tử là một ký tự. Mỗi ký tự có thể chiếm 1 byte (ASCII encoding) hoặc 2 đến 4 bytes (Unicode encoding).

Một string literal sẽ có 3 thuộc tính:

  • length: số lượng ký tự mà nó chứa
  • size: dung lượng theo đơn vị byte. Nếu mỗi character là 1 byte thì lengh=sizelengh = sizelengh=size
  • mutable: có được phép thay đổi nội dung bên trong hay không (tuỳ thuộc vào ngôn ngữ lập trình và cách khai báo)

String

Tuy vào mỗi ngôn ngữ lập trình, String là một kiểu riêng biệt hay dạng mảng hay là kiểu đối tượng có phương thức.

Ngôn ngữ C không có kiểu String mà sử dụng mảng để lưu ký tự

char greetings[] = "Hello World!";
greetings[0] = 'J';
printf("%s", greetings); //Jello World!

Ngôn ngữ C++ string là mutable (có thể thay đổi nội dung sau khi khai báo)

#include <string>
string firstName = "John ";
string lastName = "Doe";
string fullName = firstName + lastName;
cout << fullName;

Ngôn ngữ Java String là kiểu đối tượng, immutable (không thay đổi được nội dung).

Người ta thường dùng String để mô tả một chuỗi ngắn, còn Text là một đoạn văn bản gồm nhiều dòng.

String literal

String literal hay anonymous string là chuỗi được dùng trong mã nguồn, gán vào biến và được đánh dầu đầu và cuối (quote).

String literal khác gì với String variable ?

String literal thể hiện nội dung một chuỗi. String variable là biến kiểu chuỗi, nó có thể trỏ đến string literal này, sau đó lại trỏ đến string literal khác.
String literal thường không thể thay đổi (immutable). Nhưng String variable lại có thể thay đổi (mutable) trừ khi lập trình viên đặt nó là constant.

Literal vs Variable

public static void main(String[] args) {
  String msg = "Hello World";
  msg = "Hi World";
  System.out.println(msg);
}

Quote

Trong đoạn lệnh Java trên thì "Hello World""Hi World" là string literal, ký tự double quote " là quote (dấu ngăn cách)

Với Python, thì có thể dùng single quote ' , double quote " thậm chí triple quote ''' để lưu chuỗi có nhiều dòng (multiline string)

s = 'geekforgeeks'
t = "geekforgeeks"
m = '''geek
           for
               geeks'''
print(s)
print(t)
print(m)

Escaped character - ký tự đặc biệt trong chuỗi

Escape character là cách để biểu diễn ký tự trùng lặp với ký tự ngăn cách chuỗi hoặc ký tự điều khiển (xuống dòng, tab, backspace…)
Nếu một string literal cần chứa ký tự double quote ", quote này sẽ bị nhầm với ký tự quote đánh dấu đầu và cuối của string literal.

String msg = "\tI'm \"Cuong\"\nI am \bstudent";
System.out.println(msg);

Kết quả in ra là

    I'm "Cuong"
I amstudent

Bảng một số escaped character

Escape CharacterGiải thích
\ttab
\’single quote '
\"double quote "
\\\
\nXuống dòng mới
\bback space, xoá phía trước 1 ký tự