为什么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;