Java中的最后一个字符

小小:

以下代码段发出编译时错误。

char c = 'c';
char d = c + 5;

第二行的错误是:

possible loss of precision
  required: char
  found:    int

该错误消息基于NetBeans IDE。


如下c声明该字符时final

final char c = 'c';
char d = c + 5;

编译时错误消失。

最终字符串的情况无关

什么是final修改有所作为吗?

亚述:

原因是JLS#5.2(分配转换)如此表示:

如果该表达式是类型为byte,short,char或int的常量表达式(第15.28节),则当变量的类型为byte,short或char且常量表达式的值时,可以使用缩小的原始转换。用变量的类型表示。

在您的示例中,char c = 'c';不是一个常数,而是一个常数final char c = 'c';

基本原理可能是加法运算符+首先将其操作数转换为整数。因此,除非一切都恒定,否则该操作可能会溢出,在这种情况下,编译器可以证明没有溢出。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章