Integer.parseInt 不做与演员相同的事情。
让我们看一下您的第一个示例:
int randomNumber=(int) (Math.random()*5)
Math.random 返回一个 double,当你将一个 double 乘以一个 int Java 时,它认为结果是一个 double。因此,表达式 Math.random()*5 具有 double 类型。您要做的是将该值分配给 int 类型的变量。默认情况下,如果您没有明确告诉编译器可以这样做,Java 将不允许您将 double 值分配给 int 类型的变量。基本上,您可以认为将 double 转换为 int 就像告诉编译器:“我知道这个 int 变量不能保存这个 double 值的小数部分,但没关系,只需截断它即可。”
现在看一下 String 到 int 的转换:
int value = Integer.parseInt("5");
字符串“5”不能立即转换为整数。与根据定义可以通过删除小数部分将其转换为整数的双精度数不同,字符串不能轻松或一致地转换为 int。“5”、“042”和“1,000”都有整数表示,但类似于“Hello, World!” 才不是。因此,没有将 String 转换为 int 的一阶语言功能。相反,您使用一种方法来解析字符串并返回值。
所以回答你所有的问题:
为什么有两种不同的方法使值成为 int ?
您必须考虑要转换的值的类型是什么。如果要将基元转换为 int,则可以使用强制转换;如果要转换 Object,则需要使用特定于该类型的某种转换方法。
我也进行了搜索,它说 parseInt() 将字符串作为参数。这是否意味着 parseInt() 只能将字符串转换为整数?
正确的。您不能将任何其他类型传递给 parseInt 方法,否则您将收到编译器错误。
那么这个铸造怎么样(int)?我们也可以使用它来将字符串转换为 int 吗?
不,转换为 int 仅适用于原始值,而在 Java 中,String 不是原始值。