>不能从int转换为char。 一个+ = B

这个问题在这里已经有了答案:

  • 为什么Java的+ =, - =,* =,/ =复合赋值操作符需要转换? 11个答案

  • 答案在于二进制数字提升。 所有操作数都被提升为更宽操作数的类型,并且至少达到int 。 这由JLS的第5.6.2节描述:

    2.扩展原始转换(§5.1.2)用于转换以下规则中指定的一个或两个操作数:

  • 如果其中一个操作数是double类型,另一个操作数转换为double。

  • 否则,如果任一操作数的类型为float,则另一个操作数转换为float。

  • 否则,如果任一操作数的类型为long,则另一个操作数转换为long。

  • 否则, 两个操作数都转换为int类型

  • (强调我的)

    因此charcheckSum )加上一个charcharNum[i] )是一个int


    它比你想象的更简单:)。

    如果你添加两个char ,它会创建int 。 总是。


    而且你在一些事情上是不正确的: array of char的单元格的值是char ,而不是引用,因此charNum[i]char ,它只有2个字节宽度。

    链接地址: http://www.djcxy.com/p/12791.html

    上一篇: >cannot convert from int to char. a+=b

    下一篇: Java typecasting confusion