【问题标题】:Why is this statement in a Java programming code invalid?为什么 Java 编程代码中的这条语句无效?
【发布时间】:2013-09-09 15:25:42
【问题描述】:
args[i] = Integer.parseInt(args[i]);

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

【问题讨论】:

  • args 是 String[] 类型。您不能将 Integer 类型分配给 String 类型。
  • 我不认为这是高效的代码
  • 所以这一定是我在很长一段时间内这么快看到的最多的答案

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


【解决方案1】:

在不使用parseInt 的情况下演示它可能是最简单的:

String[] x = new String[5];
x[0] = 100;

你希望它编译吗?这不是因为您试图将 int 分配给 String 数组元素。

或者我们也可以去掉数组部分:

String x = 100;

你希望 那个 编译吗?如果不是,为什么您认为数组版本不同?如果您不认为数组版本不同(即它不应该编译),您认为我的示例和您的代码之间有什么显着差异?

【讨论】:

    【解决方案2】:

    因为您将int 分配给String

    【讨论】:

      【解决方案3】:

      因为您不能将int 存储在String[] 中。不要使用相同的数组。

      您可能认为这是“高效”的,但用于在数组中存储 String 引用的字节数可能与用于存储 int 的字节数不同——这不一定甚至在内存级别使用同一个数组也是有意义的,更不用说失去类型安全了。

      【讨论】:

      • 他将int 存储在String,而不是String[]
      • @BackSlash。他实际上将int 存储在String[] 中。
      • @BackSlash。 args 是一个数组。所以他在该数组的索引i处插入一个int
      • 通过“in String[],我的意思是“作为String[] 的元素”。您的意思是存储int as 一个String[],这不是我说的。
      • 乔恩,请到这里来宣判!
      【解决方案4】:

      这段代码没有任何意义。您正在将String 参数解析为int,但您试图将其分配回String[] 数组中的String。您不能将int 分配给String

      当然,您可以将其转换回String 以将其分配回数组中的某个位置,但没有理由这样做;你一开始就已经有了String

      【讨论】:

        【解决方案5】:

        Integer.parseInt(args[i]) 返回一个 int,而您正试图将它分配给一个 String 数组元素。

        【讨论】:

          【解决方案6】:
          int integerArgs[] = new int[args.length];
          
          ...
          
          integerArgs[i] Integer.parseInt(args[i]);
          

          【讨论】:

            【解决方案7】:

            正如大家所解释的那样,将 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) 转换为对象。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-12-11
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2022-10-24
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多