为什么没有缺席返回类型的编译错误

时间:2018-02-13 12:03:32

标签: java compiler-errors return-type


我试图理解方法重载的概念。

public class Demo {

    public int myMethod(int num1, int num2) {
        System.out.println("First myMethod of class Demo");
        return num1 + num2;
    }

    public double myMethod(double var1, double var2) {
        System.out.println("Second myMethod of class Demo");
        return var1 - var2;
    }

    public static void main(String args[]) {
        Demo obj1 = new Demo();
        //here
        obj1.myMethod(10, 10);
        // and here
        obj1.myMethod(20, 12);
    }
}

我试图弄清楚为什么在 obj1.myMethod(10, 10); obj1.myMethod(20, 12); 语句中缺少返回类型时没有编译错误。
显然,myMethod()都返回int和double。

为什么没有编译错误?请帮我理解。

1 个答案:

答案 0 :(得分:1)

else都返回了一些内容。你称这些方法为:

myMethod()

但您对该返回值不执行任何操作。您可能需要考虑将这些方法的返回值存储在变量中,例如:

obj1.myMethod(10, 10);
obj1.myMethod(20, 12);

然后您可以打印int first = obj1.myMethod(10, 10); //assigning return value of myMethod to int variable ,查看使用first计算的返回值是什么:

myMethod()

另一种可能性是,不是将返回值存储在变量中,而是直接将返回值打印到控制台:

System.out.println(first);

请注意,在两个方法调用上:

System.out.println(obj1.myMethod(10, 10));

正在调用返回obj1.myMethod(10, 10); obj1.myMethod(20, 12); 的方法(int)。这是因为您将public int myMethod(int num1, int num2) {...}个参数传递给int。如果希望调用返回double的方法变量,则可以将参数更改为myMethod()值:

double

或:

obj1.myMethod(20.0, 12.0); // here you pass two double values as arguments