【问题标题】:Why doesn't increment operator work on chars always?为什么增量运算符不总是对字符起作用?
【发布时间】:2014-05-19 21:23:05
【问题描述】:

为什么会这样:

char c = 5;
int i = c++;

但这会引发编译器错误(运算符的无效参数 ++/--):

int i = argv[0].charAt(0)++;

【问题讨论】:

    标签: java string char int


    【解决方案1】:

    ++ 运算符适用于返回对可写内容的引用的变量和表达式,而不是一般的所有值。换句话说,根本没有办法将递增的char 的值写回原始字符串,所以charAt(0)++ 是一个错误。

    您可以通过将argv[0] 转换为字符数组并在该数组中增加一个值来解决此问题。

    【讨论】:

    • 啊,我认为如果它是一个值而不是一个变量,它会跳过写入。
    • @Dgrin91 Java 假设如果你不想写,你会写x 而不是x++,因为表达式计算的值是相同的。
    【解决方案2】:

    增量运算符只能应用于左值,这意味着表达式的计算结果可以出现在赋值表达式的左侧。函数的返回值不是左值

    在您的charAt(0) 调用与基础char[] 中读取此char 值的位置之间没有任何联系。如果你有

    argv[0].value[0]++;
    

    这可行,但value

    private final char[] value;
    

    不可变字符串类中。

    【讨论】:

      【解决方案3】:

      简单地说:它需要一个变量。这不是一个
      变量argv[0].charAt(0) 而是一个方法调用。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2015-07-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-20
        • 2017-03-16
        • 1970-01-01
        相关资源
        最近更新 更多