在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/

10-12 04:12