我只是想知道为什么这有效(在Java中):
byte b = 27;
Run Code Online (Sandbox Code Playgroud)
但是这样的方法声明:
public void method(byte b){
System.out.println(b);
}
Run Code Online (Sandbox Code Playgroud)
这不起作用:
a.method(27);
Run Code Online (Sandbox Code Playgroud)
给出编译器错误如下:
`The method method(byte) in the type App is not applicable for the arguments (int)`
Run Code Online (Sandbox Code Playgroud)
阅读本文并没有给我任何线索(可能是我误解了一些东西).
提前致谢.
分配的原因
byte b = 27;
Run Code Online (Sandbox Code Playgroud)
工作是由Java语言规范(赋值转换)的5.2节引起的,其中包括:
此外,如果表达式类型的常量表达式(§15.28) , ,
byte或:shortcharint如果变量的类型是
byte,,short或者char,则可以使用缩小的基元转换 ,并且常量表达式的值可以在变量的类型中表示.
换句话说,该语言对此案例有特殊规定和作业.通常情况下,有从没有隐式转换int到byte.
有趣的是,C#在这方面的工作方式不同(尽管在核心功能的许多其他方面都像Java一样) - 方法调用在C#中是有效的.
| 归档时间: |
|
| 查看次数: |
262 次 |
| 最近记录: |