CodeGym /课程 /JAVA 25 SELF /数据类型之间的转换

数据类型之间的转换

JAVA 25 SELF
第 2 级 , 课程 3
可用

1. 为什么需要类型转换?

Java——是一种强类型语言。如果计算机有一个“数字的盒子”,你却试图往里塞文本——这就和把叉子插进 USB 接口一样。编译器可不会原谅你!😡

不过,在实际工作中我们经常同时处理不同的数据类型。比如,你有一个包含数字的字符串。这时就需要进行转换(或“类型变换”)。

来看一个例子。假设你要保存用户数量:

int a = 1;
int b = "2";
int c = "三";

编译器会立刻说:“你把我当什么了?我可不会自动把字符串转换成数字,离不开你。必须显式地把字符串转换为数字。”

Java 中有多种转换方式——各有优缺点和常见坑。

2. 将 int 转换为 String

工作中经常需要得到数字的字符串表示:例如,用于输出到屏幕、保存到文件、通过网络传输、与文本拼接等。在 Java 中有多种方法可用,不同场景各有适用性。

String.valueOf() 函数

这是最主要、最常用的方法:

int number = 42;
String str = String.valueOf(number);  // str == "42"

String.valueOf() 会把传入对象的值转换为与其类型相对应的字符串。

与空字符串拼接

一种老但可用的方法:

int number = 42;
String str = "" + number;

这种方式在简单场景下很快捷,但对阅读代码的人不够直观。

3. 隐式转换为字符串

如上所述,Java 的设计使得在 Java 中几乎所有变量、对象、表达式都可以转换为 String

此外,当我们把 String 与其他类型相加时,这种转换会自动发生。示例:

int a = 5;
String name = "Anya" + a;            //  name 包含字符串 Anya5

int a = 5;
String city = a + "New York" + a;   //  city 包含字符串 5New York5

int number = 10;
String code = "Yo";
String message = "Hello! " + number + code; //  message 包含字符串 Hello! 10Yo

在这三个示例中,我们把 intString 相加,结果始终是 String 类型。

重要! 不能对 String 类型执行算术运算。即便该字符串完全由数字组成。

示例:

int a = 5;
String name = "1" + a;              //  name 包含字符串 15

int a = 5;
String city = a + "9" + a;          //  city 包含字符串 595

int number = 10;
String code = "10";
String message = "" + number + code; // message 包含字符串 1010 

加法从左到右执行,因此结果可能会有些出乎意料。例:

int a = 5;
String name = a + a + "1" + a;      // name 包含字符串 1015

执行顺序: ((a + a) + "1") + a

4. 将字符串转换为数字

Java 中要把数字转换为字符串,只需与空字符串相加:

String str = "" + chislo;

那如果需要把字符串转换成数字呢?并不是任意字符串都能转换成数字。但如果字符串只包含数字字符,是可以的。为此,在 Java 中有专门的函数。

命令如下:


int x = Integer.parseInt(stroka);
将字符串转换为数字

其中,int x 是对整型变量 x 的声明,而 stroka 是以字符串形式给出的数字(仅由数字组成的字符串)。

示例:

String str = "123";
int number1 = Integer.parseInt(str);        //  number1 包含数字 123;

int number2 = Integer.parseInt("321");      //  number2 包含数字 321

int number3 = Integer.parseInt("321" + 0);  //  number3 包含数字 3210

int number4 = "321"; //  无法编译:变量是 int 类型,而值是 string 类型

对负数同样适用:函数 Integer.parseInt() 很聪明。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION