调用整数返回函数而不将返回值赋给任何东西

时间:2013-05-25 16:45:14

标签: java

class Example(){
    public void disp(float num1, int num2){
        System.out.println("First disp method in Example class");
        System.out.println("num1="+num1);
    }

    public int disp(int num1, int num2){
        System.out.prinln("Second disp method in Example class");
        System.out.println("num2="+num2);
        return num1;
    }
    class Demo(){
        public static void main(String args[]){
        Example obj=new Example();
        obj.disp(60,20);
    }
}

输出: 示例类中的第二个disp方法 num1=60

这怎么可能?第二种显示方法返回整数类型值,调用语法不会将该值存储在任何位置。

第二个问题是,无论我将此程序保存为Example.java还是Demo.java,它都可以正常运行。但就我的知识而言,文件名应与容纳main函数的类相同。

4 个答案:

答案 0 :(得分:2)

运行提供的程序我得到了输出

Second disp method in Example class
num2=20

这是因为带有两个int参数的方法签名与您提供的方法调用完全匹配 关于返回类型,Java在决定使用哪种方法时甚至不考虑返回类型。只有返回类型才有两种方法不同是违法的。您可以在the language specs中阅读更多内容。

您没有将返回的int存储在任何地方这一事实无关紧要,Java并不要求您这样做。

修改
关于第二个问题,唯一的规则是每个文件中只能有一个public类,并且该类的名称必须与文件名匹配。
由于您的Example课程不是public,因此该规则不适用。您可以在文件中包含任意数量的非公共类。

答案 1 :(得分:0)

我认为您需要确保重新编译代码,而不仅仅是保存代码。上面的清单肯定会输出:

Second disp method in example class num2=20

答案 2 :(得分:0)

文件名应与容纳main函数的类相同。 这是不正确的。如果您的A类是公开的,那么文件Name将是A.java。  在内部类中,如果要创建main方法,那么该类应该是静态的

答案 3 :(得分:0)

关于您的第二个问题,由于您没有将任何一个类声明为公共类,因此您为该文件指定的名称无关紧要。您将其中一个类声明为public时,文件名必须与之匹配。尝试在同一文件中声明多个公共类是编译器错误。

为了可维护性,尽可能在每个文件中保留一个类。