Java中的字符不会随后增量更新[重复]
Posted
技术标签:
【中文标题】Java中的字符不会随后增量更新[重复]【英文标题】:Character in Java don't update with post increment [duplicate] 【发布时间】:2019-03-18 11:16:50 【问题描述】:我想得到下一个字符,我正在编写这样的代码
char c = 'A';
c = c++;
System.out.println(c);
打印的字符是 A。但是如果我使用带有 'c' 的预增量运算符,那么我会得到下一个字符 (B)。这是带有预增量运算符的代码。
char c = 'A';
c = ++c;
System.out.println(c);
有人能解释一下区别吗?
【问题讨论】:
c =
赋值发生在后增量之后,覆盖它。
【参考方案1】:
c = c++;
表示,首先使用当前值,然后递增。因此它首先打印当前值
c = c++;
System.out.println(c);
翻译为:
c = c; // since the actual value is returned first
System.out.println(c);
因此,值A
被打印出来。
而
c = ++c;
System.out.println(c);
翻译成
c = c+1;
System.out.println(c);
【讨论】:
如果是局部变量,则第一个示例根本不会增加c
(在赋值重置之前,字段会在很短的时间内增加,可能会导致多线程问题)跨度>
@Carcigenicate,哦,我的错...感谢您的纠正:)【参考方案2】:
如果将结果分配回变量,则增量运算符没有意义。正在做
c = c++;
获取c++
的返回值,即'A'
,并将其分配给c
。相反,只需做
c++; // or ++c
在你的情况下,你可能想要做
System.out.println(++c); // prints 'B', and |c| is now 'B'
【讨论】:
很可能想要做System.out.println(++c)
,因为System.out.println(c++)
仍然会打印A,即使c
将被设置为'B'。
@KlitosKyriacou 谢谢,编辑了我的答案以上是关于Java中的字符不会随后增量更新[重复]的主要内容,如果未能解决你的问题,请参考以下文章
通过 oozie 从 sqoop 作业增量导入不会更新 sqoop 元存储中的 incremental.last.value