小编Dhr*_*val的帖子

方法有歧义

我正在尝试理解方法重载,但无法理解以下示例中出现以下代码错误的原因

public class OverLoading_OverRiding {
     public static void main(String[] args) {
        OverLoading_OverRiding o = new OverLoading_OverRiding();
        o.sum(5, 5);
    }

    void sum(int i, long j) {   }
    void sum(long i, int j) {   }
}
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

方法 sum(int, long) 对于 OverLoading_OverRiding 类型是不明确的。

当我在同一个示例上执行显式转换时,它可以工作:

    o.sum(5, (long)5);
Run Code Online (Sandbox Code Playgroud)

java overloading compiler-errors

4
推荐指数
1
解决办法
1万
查看次数

i = i + 1和i ++之间的差异

任何人都可以在这里解决我的困惑是我的代码:

byte i = 0;

i++;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

结果:1

byte i = 0;

i = i+1;
System.out.println(i);
Run Code Online (Sandbox Code Playgroud)

生成编译时错误:类型不匹配:无法从int转换为byte

当我将其转换为字节时: i = (byte) (i+1);然后愉快地得到结果1

执行这个例子我明白i = i + 1&i ++执行不能同样的操作,所以现在我想知道它们之间究竟有什么区别...... !!!

java casting operators

-1
推荐指数
1
解决办法
1596
查看次数

标签 统计

java ×2

casting ×1

compiler-errors ×1

operators ×1

overloading ×1