我想了解以下代码:
public class A {
private void doTask() {
doInt(99);
}
public short doInt(short s) {
return 100;
}
}
Run Code Online (Sandbox Code Playgroud)
代码在"doInt(99)"行上给出编译器错误.
The method doInt(short) in the type A is not applicable for the arguments (int)
Run Code Online (Sandbox Code Playgroud)
有人可以解释为什么它会给我错误.
在java中,整数的默认类型是int.Java将自动向上转发(例如从short到int),但由于可能会丢失数据,因此会发出向下转发的警告(例如从int转到short).
您的代码的修复是这样的:
doInt((short)99);
Run Code Online (Sandbox Code Playgroud)
这种显式向下转换将99(即a int)更改为a short,因此没有(进一步)可能的数据丢失.
尝试
public class A {
private void doTask() {
doInt((short)99);
}
public short doInt(short s) {
return (short)100;
}
}
Run Code Online (Sandbox Code Playgroud)
Java 认为程序中的所有文字(例如 99 或 100)都是 int。
如果您传递大数字,例如 12345678,它将被剪切以适合short值。Java 没有你就无法削减数字,所以你必须自己做。这样你就可以看到你将 int 转换为 Short
| 归档时间: |
|
| 查看次数: |
4085 次 |
| 最近记录: |