CodeGym /Các khóa học /JAVA 25 SELF /Chuỗi và văn bản: kiểu String, làm việc với chuỗi

Chuỗi và văn bản: kiểu String, làm việc với chuỗi

JAVA 25 SELF
Mức độ , Bài học
Có sẵn

1. Tìm hiểu chi tiết hơn về kiểu String

Kiểu String là một trong những kiểu được dùng nhiều nhất trong Java — có lẽ là nhiều nhất. Đây là một kiểu tuyệt vời, vì trong các biến như vậy có thể lưu trữ văn bản. Và nữa, khác với các kiểu intdouble, các đối tượng kiểu String có rất nhiều hàm (phương thức) khác nhau, nhờ đó bạn có thể làm nhiều điều thú vị.

Ngoài ra, mọi đối tượng trong Java (tất cả) đều có thể được chuyển thành kiểu String. Hay nói chính xác hơn, mọi đối tượng trong Java đều trả về biểu diễn dạng văn bản (chuỗi) của mình. Chúng ta sẽ còn quay lại kiểu này nhiều lần (vì nó rất hữu ích và thú vị), nhưng hôm nay hãy làm quen với các khái niệm cơ bản của nó.

Tạo biến kiểu String

Kiểu String được tạo ra để lưu trữ chuỗi (văn bản). Để tạo trong code một biến có thể lưu được văn bản, bạn dùng lệnh:

String imya;
Tạo biến kiểu String

Trong đó imya là tên biến.

Ví dụ:

Lệnh Mô tả
String name;
Tạo biến chuỗi name
String message;
Tạo biến chuỗi message
String text;
Tạo biến chuỗi text

Cũng như với các kiểu intdouble, bạn có thể dùng cách viết ngắn gọn để tạo nhiều biến kiểu String:

String imya1, imya2, imya3;
Tạo nhiều biến kiểu String

2. Gán giá trị cho biến kiểu String

Để đưa một giá trị vào biến kiểu String, bạn dùng lệnh:

imya = "giá trị";
Gán giá trị cho biến kiểu String

Và đây là sự khác biệt đầu tiên so với các kiểu đã học. Tất cả giá trị kiểu String đều là các chuỗi văn bản và phải được đặt trong cặp dấu ngoặc kép.

Ví dụ:

Lệnh Ghi chú
String name = "Anya";
Biến name chứa văn bản Anya
String city = "New York";
Biến city chứa văn bản New York
String message = "Hello!";
Biến message chứa văn bản Hello!

3. Khởi tạo biến kiểu String

Cũng như với các kiểu intdouble, biến kiểu String có thể được khởi tạo ngay khi tạo. Thực ra, việc này có thể làm với mọi kiểu trong Java. Vậy nên chúng ta sẽ không nhắc lại nữa.

String imya1 = "giá trị 1", imya2 = "giá trị 2", imya3 = "giá trị 3";
Dạng rút gọn để tạo và khởi tạo biến
String name = "Anya", city = "New York", message = "Hello!";
Ví dụ lệnh tạo và khởi tạo biến

Chỉ có thể thao tác với biến đã có giá trị

Trình biên dịch Java sẽ báo lỗi nếu bạn khai báo biến mà không gán cho nó bất kỳ giá trị nào rồi cố sử dụng nó.

Mã như sau sẽ không chạy được:

String name;
System.out.println(name); // Biến name chưa được khởi tạo. Chương trình sẽ không biên dịch.
int a;
a++; // Biến a chưa được khởi tạo. Chương trình sẽ không biên dịch.
double x;
double y = x; // Biến x chưa được khởi tạo. Chương trình sẽ không biên dịch.

4. Nối chuỗi — “dán” các chuỗi lại với nhau

Có một điều rất thú vị và đơn giản có thể làm với chuỗi trong Java — bạn có thể “dán” chúng lại với nhau. Phép toán này gọi là concatenation. Hoặc để dễ nhớ hơn — “Kon-Kote-Natsiya” 😆. Dù thường người ta gọi là “ghép chuỗi” hay đơn giản là “cộng chuỗi”.

Để ghép hai chuỗi, dùng toán tử +. Rất đơn giản:

"chuỗi1" + "chuỗi2"
Nối hai chuỗi

Ví dụ:

Lệnh Ghi chú
String name = "Anya" + "Anya";
name chứa chuỗi AnyaAnya
String city = "New York" + "Anya";
city chứa chuỗi New YorkAnya
String message = "Hello! " + "Anya";
message chứa chuỗi Hello! Anya

Và tất nhiên, bạn có thể cộng nhiều chuỗi cùng lúc, cũng như cộng chuỗi với biến.

String name = "Anya";                // name chứa chuỗi Anya
String city = "New York";           // city chứa chuỗi New York
String message = "Hello!" + city + name + city; // message chứa chuỗi Hello!New YorkAnyaNew York

5. Chuỗi rỗng

Trong ví dụ cuối, thấy rằng văn bản trong biến message khó đọc vì thiếu khoảng trắng. Để đặt một hoặc vài khoảng trắng, bạn chỉ cần viết chúng trong code và bọc trong dấu ngoặc kép. Dễ hơn bạn nghĩ:

" "
Chuỗi chứa một khoảng trắng

Nhân tiện, nếu giữa dấu ngoặc kép không để gì cả (viết hai dấu ngoặc kép liền nhau), ta sẽ được “chuỗi rỗng”:

""
Chuỗi rỗng

Ở một mặt, nó tồn tại, nhưng mặt khác, khi in ra màn hình thì chẳng có gì được hiển thị. Khi ghép với chuỗi khác cũng không có gì xảy ra. Tựa như số 0 nhưng dành cho chuỗi.

6. Escape các ký tự đặc biệt trong chuỗi

Bạn đã biết các chuỗi được bao bởi dấu ngoặc kép. Vậy nếu cần chèn dấu ngoặc kép vào trong chuỗi thì làm sao? Nếu ta viết dấu ngoặc kép trong chuỗi, liệu trình biên dịch có coi đó là kết thúc chuỗi không?

Đúng vậy. Vì thế, dấu ngoặc kép bên trong văn bản được thay bằng cặp ký tự \". Và code sẽ trông như sau:

String quote = "Anh ấy nói: \"Xin chào!\"";
System.out.println(quote); // Anh ấy nói: "Xin chào!"

Thực ra còn tinh vi hơn chút. Ký tự \ được coi là ký tự đặc biệt (điều khiển) trong chuỗi. Với nó, ta có thể chỉ định các “ký tự không in được” như xuống dòng, tab, v.v. Còn nếu muốn biểu diễn chính ký tự \, bạn cần viết nó 2 lần.

Dưới đây là 4 tổ hợp phổ biến nhất:

Cách viết Ý nghĩa
\n Xuống dòng (newline)
\t Tab (thụt lề)
\\ Ký tự \ theo nghĩa đen
\" Dấu ngoặc kép bên trong chuỗi

Ví dụ:

String multiline = "Dòng 1\nDòng 2";
System.out.println(multiline);

Sẽ in ra:

Dòng 1
Dòng 2

7. Các hàm sẵn có của chuỗi

Kiểu String có các hàm riêng (còn gọi là phương thức). Có rất nhiều, và chúng giúp lập trình viên đỡ vất vả hơn. Hôm nay bạn sẽ làm quen với một vài hàm (đơn giản nhất) trong số đó. Ví dụ:

Hàm Mô tả Ví dụ kết quả
str.length()
Độ dài chuỗi
"abc".length() → 3
str.toUpperCase()
Sang chữ hoa
"abc".toUpperCase() → "ABC"
str.toLowerCase()
Sang chữ thường
"ABC".toLowerCase() → "abc"
str.trim()
Xóa khoảng trắng ở hai đầu
"  x y  ".trim() → "x y"

Ví dụ làm việc với các hàm của chuỗi

Tất cả các hàm này được gọi như sau: biến.hàm(...).

Xác định độ dài chuỗi:

String name = "Andrey";
int length = name.length();
System.out.println(length); // 6, vì có 6 ký tự

Chuyển chuỗi sang chữ hoa hoặc chữ thường:

String original = "Xin chào";
System.out.println(original.toUpperCase()); // XIN CHÀO
System.out.println(original.toLowerCase()); // xin chào

Xóa khoảng trắng ở hai đầu (rất hữu ích khi nhập từ bàn phím):

String messy = "   hello   ";
System.out.println(messy.trim()); // "hello"

Mỗi hàm như vậy đều trả về một chuỗi mới, chuỗi cũ không thay đổi.

Bình luận
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION