是否可以在没有java中的主要和静态块的控制台上打印消息?

时间:2013-08-29 08:13:53

标签: java

在一次采访中,我问过这个问题:如果不使用静态和主要,我们如何在控制台上打印消息?是否可能?

8 个答案:

答案 0 :(得分:26)

您可以定义打印邮件的自定义类加载器:

public class MyClassLoader extends ClassLoader {
    public MyClassLoader(ClassLoader other) {
         super(other);
         System.out.println("Hi there");
         System.exit(0);
    }
}

然后运行java命令:

java -Djava.system.class.loader=MyClassLoader

(不需要添加类作为参数)

答案 1 :(得分:2)

I have asked this question:Without using static and main how could we print
message on console?Is it possible?

答案是否定的!

除非调用main()方法,否则无法执行任何操作。在Java 7之前,在查找main()方法之前加载了类。因此,您可以通过静态块打印数据(在加载类时执行静态块),但是从Java 7开始,即使这是不可能的。所以你必须首先执行main()方法。

即使在像Spring这样的框架中,只有在引用上下文时才会初始化bean(同样需要首先执行main())。所以你无法在不调用main()方法或通过静态函数/块。

答案 2 :(得分:0)

Java是一种OOP语言。

如果没有创建类并添加静态主函数,则无法创建程序。

然后,您可以致电System.out.println打印一行。

所以,答案是否定的。

答案 3 :(得分:0)

您始终需要将syso放在代码块中,可能是:

public class example { public void message(){ System.out.println("Hello"); } }

这里的方法不是静态的

答案 4 :(得分:0)

public class Test {
    public static PrintStream ps = System.out.printf("%s", "hello");
}

面试很奇怪的问题。它会打印你好,并抛出Exception in thread "main" java.lang.NoSuchMethodException

答案 5 :(得分:0)

答案绝对不是。

至少要么你需要一个静态块,要么你需要一个空的main()。

见下面的例子:

1

public class ABC {
    static{
             System.out.println("hai");
          }
    public static void main(String[] args) {}
}

输出:

2

public final class ABC {
    static{
             System.out.println("hai");
          }
}

它会在跑步时打印'hai'但在此之后也会发生一个例外。

输出:

java.lang.NoSuchMethodError:main

线程“main”中的异常

答案 6 :(得分:0)

可以使用在main方法之前执行的静态块

答案 7 :(得分:0)

@ Aniket Thakur 由于我的观点,我无法发表评论。但是以下程序在进入main之前打印消息。 注意:我使用的是Java 7和Java 8.两者都运行正常,并在main之前运行静态块。

public class PrintBeforeMain {

    private static int i = m1(); 

    public static int m1(){ 
        System.out.println("m1(): Before main() through static method..."); 
        return 0; 
    }

    static{
        System.out.println("Inside standalone static{} block");
    }

    public static void main(String[] args) {
        System.out.println("Inside main()");
    }
}