public static void main中的代码,或者在main中使用代码调用另一个方法?

时间:2016-10-12 15:37:43

标签: java main

在互联网上的教程中,我经常看到public static void main(String[] args)中的代码片段,而我编程课程的讲师通常会编写一个方法并在main中调用该方法。

例如,在教程中我会看到:

class Person {
    public static void main(String[] args) {
        int age = 20;
        System.out.println(age);
    }
}

我的讲师会写:

class Person {
    void run() {
        int age = 20;
        System.out.println(age);
    }

    public static void main(String[] args) {
        new Person().run();
    }
}

这两者之间是否存在差异,还是只是偏好?

4 个答案:

答案 0 :(得分:4)

区别在于main方法是static,这基本上意味着它无法访问Person的非静态方法/字段。当您使用Person创建new Person()的新实例时,您可以访问其所有成员方法(例如此示例中的run)。

答案 1 :(得分:1)

班级中的主要方法是您进入该计划的入口点。这意味着它应该仅用于实例化程序将要执行的任何对象。

你的程序应该是由类组成的,这些类的一些实例是实际完成所有工作的那些类,那些“对象”应该有一些行为可以为你的程序提供功能。

您展示的示例非常基本。基本上它基本上什么也没做,但也许你的讲师想要开始让你习惯于面向对象的编程,而你甚至不知道它。

稍后他可能会告诉你public static void main函数只会调用Form对象(一个窗口),那个表单也会有一个run方法。稍后发生的所有事情都将由该表格及其组件负责(即处理用户输入,如点击或键盘)。之后的主要功能几乎不会发生任何事情。

答案 2 :(得分:1)

从输出的角度来看,没有区别,因为两者都会显示相同的东西。从技术角度来看,第一个例子比第二个例子更快。 它是一种标准的编码实践,在这里有所不同。作为一个初学者,第一个例子可能看起来更好,因为它比第二个例子更容易,更快速和更直接(它有额外的努力来编写新方法,创建新对象然后调用方法来实现同样的事情,你可以在第一个例子中用单行代码实现。)

@ adam-arold已经提到了技术差异。我将强调编程原理,这是这里的主要区别。

第二个例子遵循名为SoC(关注点分离)的标准编码原则。 SoC说每个Class/Method应该只有与他们应该做的事情相关的代码,因为任何额外的功能都应该在单独的Class/Method中处理。 Main方法是一个入口点,Main方法的责任是配置设置并启动程序而不是处理任何业务逻辑(这里的业务逻辑是打印一行)。 您的讲师遵循标准做法:)即使是简单的例子。

听起来你的讲师是相当不错的程序员:)

答案 3 :(得分:1)

两者都适合运行简单样本或进行测试。

如果你想快速测试一些代码/ api,我建议你直接在main方法中运行第一个代码/ api。因此,如果您只关心运行您的东西并检查打印结果,则无需创建新方法。

但是,如果您要使用更多OO原则做某事,通常应该在非静态(即非'主')上下文中将对象内部的逻辑放在一起。因此,如果你有一个属于Person的逻辑,那么应该封装在Person的方法中,无论谁调用它(另一个对象或简单的main)都将使用它的方法。

如果您对静态与非静态有疑问,我建议您通过互联网阅读一些教程并进行实验。示例:http://beginnersbook.com/2013/05/static-vs-non-static-methods/