Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/EmptyTag/158.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_Class - Fatal编程技术网

为什么java程序从类定义开始?

为什么java程序从类定义开始?,java,class,Java,Class,据说java程序本身就是一个类,但我不明白背后的逻辑 java程序本身从类的定义开始(在导入包…等之后),主方法本身在类中定义 为什么是这样 为什么主方法必须被包含在一个类中,而不是作为一个单独的方法/函数包含在诸如C、C++等……< /P>之类的语言中。 例如,一个简单的java hello world程序:- public class HelloWorld { public static void main(String[] args) { System.ou

据说java程序本身就是一个类,但我不明白背后的逻辑

java程序本身从类的定义开始(在导入包…等之后),主方法本身在类中定义

为什么是这样

为什么主方法必须被包含在一个类中,而不是作为一个单独的方法/函数包含在诸如C、C++等……< /P>之类的语言中。 例如,一个简单的java hello world程序:-

public class HelloWorld
{
    public static void main(String[] args)
    {
        System.out.println("Hello world!"+"Hello again");
    }
}

为什么一个程序必须从一个类及其包含的主要方法开始?

Java虚拟机(JVM)必须在某个地方启动应用程序。由于Java没有“类外的事物”的概念,JVM调用的方法必须在类中。因为它是静态的,所以还没有创建该类的实例。

JVM不理解类之外的概念方法。基本上,JVM调用的任何方法都必须在类中。main方法是静态的,因为在java应用程序开始时没有初始化任何内容,因此使其成为静态允许JVM调用它作为起点。

因为java语言规范这么说!例如,见。或者更准确地说:

Java虚拟机通过加载指定的类,然后调用该指定类中的main方法来启动

(见第12章开头,)

有时候事情的背后并没有什么“大”的原因,java语言的创始人可能已经了解了其他语言在他们开始java时所做的事情。他们决定采用这种方法——而且从来没有一个艰难而紧迫的理由回来改变这种情况

除此之外:您必须了解JVM并不关心Java源代码。它只关心Java字节码规范和编译后的.class文件中的complete


换句话说:除了类之外,没有其他“单元”可以围绕单个方法/函数

Java是一种面向对象的语言,它不支持过程编程。记住Java是一种基于类的面向对象语言:为什么不呢?C++是一个很好的例子,如果没有这种限制,“为什么会这样”,因为这就是方法。本来可以不同,但事实并非如此。这只是很久以前的一个设计决定。@steve你到底在说什么我错了?为什么要接受一个完全相同的答案,只是更详细?规范的第12章和第5章详细解释了这个过程,谢谢。