Nir*_*ati 5 java primitive byte scjp char
请看下面的示例我无法理解char和byte之间的关系
byte b = 1;
char c = 2;
c = b; // line 1
Run Code Online (Sandbox Code Playgroud)
给我编译错误,因为c是类型,char而b是类型,byte所以铸造必须在这种条件下
但现在这里的推文是我在代码下运行的时候
final byte b = 1;
char c = 2;
c = b; // line 2
Run Code Online (Sandbox Code Playgroud)
第2行编译成功它根本不需要任何转换,所以我的问题是为什么char当我使用最终访问修饰符时c表现不同byte
Sot*_*lis 11
因为限定它final使变量成为常量变量,这是一个常量表达式.所以
final byte b = 1;
char c = 2;
c = b; // line 2
Run Code Online (Sandbox Code Playgroud)
实际上成了
final byte b = 1;
char c = 2;
c = 1;
Run Code Online (Sandbox Code Playgroud)
并且编译器保证该值1可以适合char变量.
对于非常数byte变量,没有这样的保证.byte已签名,char未签名.
| 归档时间: |
|
| 查看次数: |
236 次 |
| 最近记录: |