在Java中使用短格式和长格式有什么区别?看下面的代码:
char myChar = 'p';
myChar += 2;
myChar++;
myChar = myChar + 2;
System.out.println(myChar);
2号线和3号线工作正常。第4行给出了错误:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
Type mismatch: cannot convert from int to char
我认为第2行和第4行相同。但是好像不一样吗?
最佳答案
对于myChar += 2;
从JLS 15.26.2:
E1 op = E2形式的复合赋值表达式是等效的
到E1 =(T)(((E1)op(E2))),其中T是E1的类型,除了E1
仅被评估一次。
因此,它等效于:myChar = (char) (myChar + 2);
至于myChar = myChar + 2;
myChar
升级为int
并添加到2
。现在,您要为int
分配一个char
值,这会导致错误。
关于java - 字符运算-一元++和+ 1之间的区别,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33623908/