CodeGym /Các khóa học /JAVA 25 SELF /Chuyển đổi giữa các kiểu dữ liệu

Chuyển đổi giữa các kiểu dữ liệu

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

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 intString một cách thoải mái, và kết quả luôn là kiểu String.

Quan trọng! Không thể thực hiện các phép toán số học với kiểu String. Ngay cả khi chuỗi chỉ toàn chữ số.

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);
Chuyển đổi chuỗi thành số

Ở đâ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”.

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