Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/323.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
纠正Java中的主要方法,并理解其含义_Java - Fatal编程技术网

纠正Java中的主要方法,并理解其含义

纠正Java中的主要方法,并理解其含义,java,Java,我有一个简短的问题,可能会让Java专家们哑口无言,但我在理解基本的主方法语法以及它为什么会变化方面遇到了一些困难 首先是一些背景知识:我一直在学习一些基本的Java课程,而且我能够相当快地学会它,因为我用其他语言VBA、Python等做过一些编程 但无论如何,对于主要方法,本课程使用: public void run() { // do whatever we were discussing } 然而,我一直在使用的编译器www.compileonline.com和最近的JGrasp

我有一个简短的问题,可能会让Java专家们哑口无言,但我在理解基本的主方法语法以及它为什么会变化方面遇到了一些困难

首先是一些背景知识:我一直在学习一些基本的Java课程,而且我能够相当快地学会它,因为我用其他语言VBA、Python等做过一些编程

但无论如何,对于主要方法,本课程使用:

public void run() {
    // do whatever we were discussing
}
然而,我一直在使用的编译器www.compileonline.com和最近的JGrasp显然只认识到这一点:

public static void main(String args[]) {
    // code goes here.
}
现在我已经基本理解了什么是公共、无效甚至静态,但我不确定我是否理解为什么课程课使用run,而编译器却不这么说。我发现有趣的是,编译器要求main方法像常量或类变量一样是静态的,并使用名为args的字符串;我从来没有用过这根绳子,但不管出于什么原因,似乎需要它

类似地,我一直在学习的课程使用一个简单的println,但编译器需要System.out.println。。。我想我应该提一下,因为我认为这是同样情况的一部分


不管怎样,有人知道这里发生了什么吗?这没什么大不了的,因为只需将编译器所需的文本复制/粘贴到课程代码中,就可以得到类似的结果,但如果能真正了解为什么会出现这种情况,那就太好了,因为我相信这种复制/粘贴策略将来会导致bug。我能马上想到的唯一一件事是,可能是Java的一个更新彻底改变了某些函数,并且不向后兼容?无论如何,提前感谢您的意见:

run方法实现用于执行线程的Runnable接口


run方法实现用于执行线程的Runnable接口


这里是一个基本的Java类

public class Basic implements Runnable {

    @Override
    public void run() {
        // TODO Code goes here
    }

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

} 
这就是main方法和run方法协同工作的方式。将代码放在run方法中,然后从main方法执行代码

主方法是静态的,因为Java必须在类和方法中有一个入口点。args字符串数组允许您从执行程序的命令行向程序传递字符串


例如,文件复制程序有两个args参数,输入文件路径和输出文件路径。这允许文件复制程序复制任何文件。

这是一个基本的Java类

public class Basic implements Runnable {

    @Override
    public void run() {
        // TODO Code goes here
    }

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

} 
这就是main方法和run方法协同工作的方式。将代码放在run方法中,然后从main方法执行代码

主方法是静态的,因为Java必须在类和方法中有一个入口点。args字符串数组允许您从执行程序的命令行向程序传递字符串


例如,文件复制程序有两个args参数,输入文件路径和输出文件路径。这允许文件复制程序复制任何文件。

我怀疑您正在学习的课程有意避免使用正常、更详细的语法,以使没有编程经验的学生更容易访问内容

对于初学者来说,像publicstaticvoidmainstring[]args和System.out.println这样的东西对于它们所代表的看似简单的想法来说可能是非常有用的。因此,一些教师选择避开真正的Java,直到他们的学生准备好掌握数组和静态字段/方法等概念

这种教学方法也有助于防止学生遇到他们还不理解的错误,例如在静态上下文中调用非静态方法。正如其他人所提到的,它还可以很容易地确保学生编写与给定测试框架兼容的代码

至于这是一个好方法还是一个坏方法,我真的不能说。我相信一些学生会欣赏这种比较柔和的介绍,而另一些学生可能会觉得握手是一种不必要的障碍


当然,如果你打算编写真实世界的Java程序,你需要在某个时候熟悉Java的实际工作方式,这涉及到你所指出的详细形式。

我怀疑你正在学习的课程是故意避免正常的,更详细的语法,使没有编程经验的学生更容易访问内容

对于初学者来说,像publicstaticvoidmainstring[]args和System.out.println这样的东西对于它们所代表的看似简单的想法来说可能是非常有用的。因此,一些教师选择避开真正的Java,直到他们的学生准备好掌握数组和静态字段/方法等概念

这种教学方法也有助于防止学生遇到他们还不理解的错误,例如在st中调用非静态方法 语境。正如其他人所提到的,它还可以很容易地确保学生编写与给定测试框架兼容的代码

至于这是一个好方法还是一个坏方法,我真的不能说。我相信一些学生会欣赏这种比较柔和的介绍,而另一些学生可能会觉得握手是一种不必要的障碍


当然,如果您打算编写真实世界的Java程序,您需要在某个时候熟悉Java的实际工作方式,这涉及到您所指出的详细形式。

Java中独立应用程序的真正主要方法是

public static void main(String[] args) { ... }
其他一切都是框架的一部分,框架有自己的主方法,可以为您设置一些内容,然后调用您的代码


它如何调用代码取决于框架。如果是web框架,它可能会调用doGet和doPost方法servlet,或者在用@Path JAX-RS注释的类中用@GET和@POST注释的方法。如果是小程序或JavaFX应用程序,则会以不同的方式调用代码,依此类推。

Java中独立应用程序的真正主要方法是

public static void main(String[] args) { ... }
其他一切都是框架的一部分,框架有自己的主方法,可以为您设置一些内容,然后调用您的代码


它如何调用代码取决于框架。如果是web框架,它可能会调用doGet和doPost方法servlet,或者在@Path JAX-RS注释的类中调用@GET和@POST注释的方法。如果是小程序或JavaFX应用程序,则会以不同的方式调用代码,依此类推。

run是可运行类的主要方法。我想讲师可能会希望您使用它,以便您的代码能够很好地插入到一些测试工具中,但这并不正常——它不会生成独立的Java程序。System.out.println是标准的打印方式。这可能是因为您被教导使用一个框架或工具来导出自己的println,这也可能被用来捕获输出以进行测试。但这也不正常。如果你是从一个现场甚至视频的人那里学习这门课程,你应该让这个人至少解释一下你被告知要使用的工具和普通Java环境之间的区别。字符串[]参数用于从命令行调用的程序中。您需要阅读Java线程教程,就像run是可运行类的主要方法一样。我想讲师可能会希望您使用它,以便您的代码能够很好地插入到一些测试工具中,但这并不正常——它不会生成独立的Java程序。System.out.println是标准的打印方式。这可能是因为您被教导使用一个框架或工具来导出自己的println,这也可能被用来捕获输出以进行测试。但这也不正常。如果你是从一个现场甚至视频的人那里学习这门课程,你应该让这个人至少解释一下你被告知要使用的工具和普通Java环境之间的区别。字符串[]参数用于从命令行调用的程序中