1. Tại sao cần chuyển đổi kiểu?
Java — là một ngôn ngữ kiểu tĩnh nghiêm ngặt. Nếu máy tính có “chiếc hộp” dành cho số, thì cố nhét văn bản vào đó — cũng giống như cố cắm cái nĩa vào cổng USB vậy. Trình biên dịch sẽ không bỏ qua cho bạn đâu! 😡
Tuy nhiên, trong thực tế chúng ta thường phải làm việc đồng thời với nhiều kiểu dữ liệu. Ví dụ, bạn có một chuỗi chứa một con số. Khi đó bạn cần đến chuyển đổi (hay biến đổi) kiểu.
Hãy xem một ví dụ. Giả sử bạn muốn lưu số lượng người dùng:
int a = 1;
int b = "2";
int c = "ba";
Trình biên dịch sẽ lập tức nói: “Bạn nghĩ tôi là ai? Tôi không thể tự động chuyển đổi chuỗi thành số, không có bạn thì không làm được. Cần ép chuỗi sang số một cách tường minh.”
Trong Java có vài cách chuyển đổi, và mỗi cách — đều có ưu, nhược điểm cùng những “cạm bẫy” thường gặp.
2. Chuyển int thành String
Trong công việc, ta thường cần có biểu diễn dạng chuỗi của một số: chẳng hạn để in ra màn hình, lưu vào tệp, truyền qua mạng, ghép với văn bản, v.v. Trong Java có nhiều cách làm điều này, và mỗi cách phù hợp với những tình huống khác nhau.
Hàm String.valueOf()
Đây là cách cơ bản và phổ biến nhất:
int number = 42;
String str = String.valueOf(number); // str == "42"
String.valueOf() chuyển số thành một chuỗi phù hợp với kiểu của đối tượng được truyền vào.
Nối với chuỗi rỗng
Cách cũ nhưng vẫn hiệu quả:
int number = 42;
String str = "" + number;
Cách này chạy nhanh cho các trường hợp đơn giản, nhưng kém rõ ràng hơn đối với người đọc mã.
3. Chuyển đổi ngầm định sang chuỗi
Như đã nói ở trên, các nhà phát triển Java đã làm sao cho mọi biến, đối tượng, biểu thức trong Java đều có thể được chuyển thành kiểu String.
Hơn nữa, điều đó xảy ra tự động khi ta cộng kiểu String với một kiểu khác. Ví dụ:
int a = 5;
String name = "Anya" + a; // name chứa chuỗi Anya5
int a = 5;
String city = a + "New York" + a; // city chứa chuỗi 5New York5
int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; // message chứa chuỗi Hello! 10Yo
Trong cả ba ví dụ, chúng ta cộng biến kiểu int và String một cách thoải mái, và kết quả luôn là kiểu String.
Ví dụ:
int a = 5;
String name = "1" + a; // name chứa chuỗi 15
int a = 5;
String city = a + "9" + a; // city chứa chuỗi 595
int number = 10;
String code = "10";
String message = "" + number + code; // message chứa chuỗi 1010
Phép cộng được thực hiện từ trái sang phải, nên kết quả có thể hơi bất ngờ. Ví dụ:
int a = 5;
String name = a + a + "1" + a; // name chứa chuỗi 1015
Thứ tự thực hiện: ((a + a) + "1") + a
4. Chuyển đổi chuỗi thành số
Để chuyển số thành chuỗi trong Java, chỉ cần cộng nó với một chuỗi rỗng:
String str = "" + chislo;
Vậy còn khi cần chuyển chuỗi thành số thì sao? Không thể chuyển mọi chuỗi thành số. Nhưng nếu chuỗi chỉ gồm các chữ số, thì vẫn có thể. Trong Java có hàm chuyên dụng cho việc này.
Câu lệnh trông như sau:
int x = Integer.parseInt(stroka);
Ở đây int x — là khai báo biến nguyên x, còn stroka — là một số được đưa vào dưới dạng chuỗi (chuỗi chỉ gồm các chữ số).
Ví dụ:
String str = "123";
int number1 = Integer.parseInt(str); // number1 chứa số 123;
int number2 = Integer.parseInt("321"); // number2 chứa số 321
int number3 = Integer.parseInt("321" + 0); // number3 chứa số 3210
int number4 = "321"; // Không biên dịch được: biến kiểu int, còn giá trị là kiểu String
Với giá trị âm cũng hoạt động: hàm Integer.parseInt() rất “thông minh”.
GO TO FULL VERSION