关于Integer.parseInt()和转换的初学者Java问题

Ser*_*ity 7 java casting parseint

所以当在下面的声明中进行施法时: -

int randomNumber=(int) (Math.random()*5)
Run Code Online (Sandbox Code Playgroud)

它导致随机的没有.生成以转换为int ..

还有这种方法,我刚刚遇到Integer.parseInt(),它做同样的事情!

即返回一个整数

为什么有两种不同的方法使值成为int?

我也进行了搜索,它说parseInt()将字符串作为参数.所以这是否意味着parseInt()只能将String转换为整数?

那么铸造然后(int)?? 我们可以用它来将字符串转换为int吗?

抱歉,如果这听起来像一个愚蠢的问题..我只是困惑,并试图了解

救命 ?

Mik*_*eck 18

Integer.parseInt与强制转换不同.

我们来看看你的第一个例子:

int randomNumber=(int) (Math.random()*5)
Run Code Online (Sandbox Code Playgroud)

Math.random返回一个double,当你将double乘以int时,Java认为结果是double.因此,表达式Math.random()*5的类型为double.您要做的是将该值赋给int类型的变量.默认情况下,Java不允许您为int类型的变量分配double值,而不明确告诉编译器可以这样做.基本上你可以考虑将一个double转换为int来告诉编译器,"我知道这个int变量不能保存这个double值的小数部分,但是没关系,只是截断它."

现在看一下String到int的转换:

int value = Integer.parseInt("5");
Run Code Online (Sandbox Code Playgroud)

字符串"5"不能立即转换为整数.与双精度不同,根据定义,可以通过删除小数部分将其转换为整数,但不能轻易地或一致地将字符串转换为int."5","042"和"1,000"都有整数表示,但类似"Hello,World!" 才不是.因此,没有用于将String转换为int的一阶语言功能.相反,您使用方法来解析String并返回值.

所以回答你的所有问题:

为什么有两种不同的方法使值成为int?

您必须考虑要转换的值的类型.如果要将基元转换为int,则可以使用转换,如果要转换对象,则需要使用某种特定于该类型的转换方法.

我也进行了搜索,它说parseInt()将字符串作为参数.所以这是否意味着parseInt()只能将String转换为整数?

正确.您不能将任何其他类型传递给parseInt方法,否则您将收到编译器错误.

那么铸造然后(int)?? 我们可以用它来将字符串转换为int吗?

不,转换为int仅适用于原始值,而在Java中,String不是原始值.