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 int và double, 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;
Trong đó imya là tên biến.
Ví dụ:
| Lệnh | Mô tả |
|---|---|
|
Tạo biến chuỗi name |
|
Tạo biến chuỗi message |
|
Tạo biến chuỗi text |
Cũng như với các kiểu int và double, 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;
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ị";
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ú |
|---|---|
|
Biến name chứa văn bản Anya |
|
Biến city chứa văn bản New York |
|
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 int và double, 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";
String name = "Anya", city = "New York", message = "Hello!";
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"
Ví dụ:
| Lệnh | Ghi chú |
|---|---|
|
name chứa chuỗi AnyaAnya |
|
city chứa chuỗi New YorkAnya |
|
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ĩ:
" "
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”:
""
Ở 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ả |
|---|---|---|
|
Độ dài chuỗi | |
|
Sang chữ hoa | |
|
Sang chữ thường | |
|
Xóa khoảng trắng ở hai đầu | |
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.
GO TO FULL VERSION