为什么Java编程代码中的此语句无效?
注意:是的,我正在将字符串数据类型的数组转换为整型值,并将其存储到同一数组中。但是,这种高效的代码会导致错误,为什么?是因为整个数组在转换时被标记为字符串,这就是为什么它是一个错误,还是因为您将为什么Java编程代码中的此语句无效?,java,arrays,string,integer,command-line-arguments,Java,Arrays,String,Integer,Command Line Arguments,注意:是的,我正在将字符串数据类型的数组转换为整型值,并将其存储到同一数组中。但是,这种高效的代码会导致错误,为什么?是因为整个数组在转换时被标记为字符串,这就是为什么它是一个错误,还是因为您将int分配给字符串,因为您无法将int存储在字符串[]中。不要使用相同的数组 您可能认为这是“有效的”,但用于在数组中存储字符串引用的字节数可能与用于存储int的字节数不同——在内存级别使用相同的数组甚至不一定有意义,更不用说失去类型安全性了。Integer.parseInt(args[i])返回一个in
int
分配给字符串
,因为您无法将int
存储在字符串[]
中。不要使用相同的数组
您可能认为这是“有效的”,但用于在数组中存储
字符串引用的字节数可能与用于存储int
的字节数不同——在内存级别使用相同的数组甚至不一定有意义,更不用说失去类型安全性了。Integer.parseInt(args[i])
返回一个int
,您正试图将其分配给字符串
数组元素。不使用parseInt
可能最容易演示它:
args[i] = Integer.parseInt(args[i]);
您希望编译它吗?不会,因为您试图将int
赋值到String
数组元素中
或者我们也可以去掉数组部分:
String[] x = new String[5];
x[0] = 100;
你希望编译吗?如果不是,为什么你认为数组版本不同?如果你不认为数组版本不同(即它不应该编译)您认为我的示例和您的代码之间有什么显著的区别?此代码没有任何意义。您正在将字符串
参数解析为int
,但试图将其重新分配给字符串[]中的字符串
数组。不能将int
分配给字符串
当然,您可以将其转换回字符串
以将其分配回数组中的某个位置,但没有理由这样做;您一开始就已经有了字符串
。正如大家所解释的,不可能将int(原语)转换为String(对象),即不能将int值分配给字符串类型
String x = 100;
那么为什么这种转换不可能意味着为什么java不允许这种转换?
int integerArgs[] = new int[args.length];
...
integerArgs[i] Integer.parseInt(args[i]);
示例代码显示了该语言不允许这种转换的原因,即原语到对象之间的转换
it is because Strings are objects and they are not primitives like int.
假设“sri”是从Student类实例化的对象
class Student
{
int sid; // student id no of type "int"
String name; // name which is of type "String"
}
当您执行此操作时,语言不清楚从int(原语)转换为String(对象)意味着什么,即该语言是否应将其sid或名称设置为10?因为在您执行从int到对象的转换时不清楚,所以语言不允许这样做
对象过于通用,因此无法将其从int(基本体)强制转换为对象
他在String
中存储int
,而不是String[]
@反斜杠。他实际上是在String[]
中存储int
。@BackSlash.args
是一个数组。所以他在索引i
的数组中插入int
。我的意思是“在字符串[]/code>中”作为String[]
”的一个元素。你的意思是将int
存储为String[]
,这不是我说的。Jon,请过来给出结论!args是String[]。您不能将整型赋值到字符串类型。我认为这不是有效的代码。因此,这一定是我在很长一段时间内看到的最快的答案
sri = (Student)10;