没有main方法的Java类会运行吗?

时间:2013-12-04 17:45:39

标签: java

class Demo{

    static {
        System.out.print("Hello");
    }
}
public class A{

    public static void main(String[] argc){
        Demo demo = new Demo();
    }
}

Q1。我们可以编译这个java类吗? 注意,我们在这个类中没有main方法。 Q2。有什么方法可以打印出类中的“Hello”消息吗?

5 个答案:

答案 0 :(得分:3)

  

Q1。我们可以编译这个java类吗?请注意,我们在此课程中没有主要方法。

是的,那个类应该编译。没有要求在每个类中都需要main方法来编译它。 (你的大部分课程都没有自己的main方法。)

  

Q2。我们有什么方法可以打印消息"你好"哪个在课堂上?

是的,您可以在另一个具有main方法的类中加载该类。当您的班级加载时,将执行static initializer block,并且将打印该信息。

答案 1 :(得分:1)

当类加载器加载类时将打印。

更多信息:

这个类没有任何意义,因为它不会运行任何东西。但是,如果在通过类加载器加载类时调用静态块,则可能仍然存在另一个引用此类的类 - 这将发生demo将由类加载器加载并执行静态块。

答案 2 :(得分:1)

由于没有sytax错误,因此这将是complile。但是,java程序的执行以main方法开始。由于您没有main方法,因此无法运行System.out.println方法。

答案 3 :(得分:0)

  

我们可以编译这个java类吗?

  

注意我们这个类中没有main方法。

Main是任何程序的起点,需要实际运行它

Is there any way we can print the message "Hello" which is there in the class?

当你使用静态块时,这将在类加载时打印。所以你的程序就足够了,但会加载类

答案 4 :(得分:0)

此代码不能在Java 7上运行.Java 7在初始化类之前检查是否存在main方法。它适用于Java 6。

BTW在Windows机器上试试这个

创建一个名为A.java的文件

class Con {
    static String hi = "\n\nHello World!\n\n";
}

然后编译它

javac A.java

看看会发生什么!! ;)