args[i] = Integer.parseInt(args[i]);
注意:是的,我将字符串数据类型的数组转换为整数类型值并将其存储到同一个数组中。但是,这个高效的代码会导致错误,为什么?是因为整个数组在转换时被标记为字符串,这就是错误的原因,还是?
args[i] = Integer.parseInt(args[i]);
注意:是的,我将字符串数据类型的数组转换为整数类型值并将其存储到同一个数组中。但是,这个高效的代码会导致错误,为什么?是因为整个数组在转换时被标记为字符串,这就是错误的原因,还是?
在不使用的情况下演示它可能是最简单的parseInt
:
String[] x = new String[5];
x[0] = 100;
你会期望它编译吗?这不会是因为您试图将 an 分配int
到String
数组元素中。
或者我们也可以去掉数组部分:
String x = 100;
你会期望它编译吗?如果不是,为什么您认为数组版本不同?如果您不认为数组版本不同(即它不应该编译),您在我的示例和您的代码之间看到了什么显着差异?
因为您将 a 分配int
给 a String
。
这段代码没有任何意义。String
您正在将参数解析为 a int
,但您正试图将其分配回数组String
中的a 。String[]
您不能将 a 分配int
给 a String
。
当然,您可以将其转换回 aString
以将其分配回数组中的某个位置,但没有理由这样做;你一开始就已经有了String
。
因为您不能将int
a 存储在String[]
. 不要使用相同的数组。
您可能认为这是“有效的”,但用于String
在数组中存储引用的字节数可能与用于存储 an 的字节数不同int
——在一个内存级别,更不用说类型安全的损失了。
Integer.parseInt(args[i])
返回 anint
并且您试图将其分配给String
数组元素。
int integerArgs[] = new int[args.length];
...
integerArgs[i] Integer.parseInt(args[i]);
正如大家所解释的那样,将 int(primitive) 转换为 String(object) 是不可能的,即您不能将 int 值分配给 String 类型一
那么为什么这种转换是不可能的意味着为什么它在java中是不允许的呢?
it is because Strings are objects and they are not primitives like int.
示例代码显示为什么语言不允许这种转换,即在原始到对象之间
class Student
{
int sid; // student id no of type "int"
String name; // name which is of type "String"
}
假设“sri”是一个从 Student 类实例化的对象
sri = (Student)10;
当您这样做时,语言不清楚从 int(primitive) 转换为 String(object) 意味着什么,即语言是否应该将他的 sid 或 name 设置为 10?因为在你从 int 到 object 进行这种转换时不清楚,所以语言不允许它
对象过于笼统,因此您无法将其从 int(primitives) 转换为对象。