为什么Java编程代码中的此语句无效?

时间:2013-09-05 17:22:25

标签: java arrays string integer command-line-arguments

args[i] = Integer.parseInt(args[i]);

注意:是的,我正在将String数据类型的数组转换为整数类型值并将其存储到同一个数组中。但是,这个有效的代码会导致错误,为什么呢?是因为整个数组在被转换时被标记为String,这就是为什么它是一个错误,或者?

7 个答案:

答案 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(基元)转换为对象。