args[i] = Integer.parseInt(args[i]);
注意:是的,我正在将String数据类型的数组转换为整数类型值并将其存储到同一个数组中。但是,这个有效的代码会导致错误,为什么呢?是因为整个数组在被转换时被标记为String,这就是为什么它是一个错误,或者?
答案 0 :(得分:8)
在不使用parseInt
的情况下演示它可能最简单:
String[] x = new String[5];
x[0] = 100;
您希望编译吗?这不是因为您尝试将int
分配到String
数组元素中。
或者我们也可以摆脱阵列部分:
String x = 100;
您是否希望 进行编译?如果没有,为什么你认为阵列版本不同?如果您认为阵列版本不同(即它不应该编译),您在我的示例和代码之间看到了什么显着差异?
答案 1 :(得分:3)
因为您要将int
分配给String
。
答案 2 :(得分:1)
因为您无法在int
中存储String[]
。不要使用相同的数组。
您可能认为这是“高效的”,但用于在数组中存储String
引用的字节数可能与用于存储int
的字节数不同 - 它在内存级别使用相同的数组并不一定有意义,更不用说丢失类型安全了。
答案 3 :(得分:1)
这段代码没有任何意义。您正在将String
参数解析为int
,但您尝试将其分配回String
数组中的String[]
。您无法将int
分配给String
。
当然,您可以将其转换回String
以将其分配回阵列中的某个位置,但没有理由这样做;你在开始时已经有了String
。
答案 4 :(得分:0)
Integer.parseInt(args[i])
返回int
,您正在尝试将其分配给String
数组元素。
答案 5 :(得分:0)
int integerArgs[] = new int[args.length];
...
integerArgs[i] Integer.parseInt(args[i]);
答案 6 :(得分:0)
正如大家所解释的那样无法将int(primitive)转换为String(object),即你不能将int值赋给String Type 1
那么为什么这种转换不可能意味着为什么不允许这种转换?
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 class
实例化的对象sri = (Student)10;
当你这样做时,语言不清楚从int(primitive)转换为String(object)是什么意思,即语言是否应该将他的sid或名称设置为10?因为从int到object执行此转换时不清楚,语言不允许它
对象过于笼统因此无法将其从int(基元)转换为对象。