В интервью я задал этот вопрос: не используя статические и основные, как мы можем печатать сообщение на консоли? Возможно ли это?
Можно ли печатать сообщение на консоли без основного и статического блоков в java?
Ответ 1
Вы можете определить пользовательский загрузчик классов, который печатает ваше сообщение:
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
(не нужно добавлять класс в качестве параметра)
Ответ 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 beans, как правило, инициализируются только тогда, когда на него ссылается контекст (снова требуется main(), чтобы он выполнялся первым). Так что вы не можете печатать что-то на консоль без вызова main ( ) или через статические функции/блоки.
Ответ 3
Java - это язык ООП.
Вы не можете создать программу, не создавая класс и добавляя статическую основную функцию.
Затем вы можете вызвать System.out.println
для печати строки.
Итак, ответ - нет.
Ответ 4
Вам всегда нужно положить syso
в блок кода, возможно:
public class example {
public void message(){
System.out.println("Hello");
}
}
Здесь метод не статичен
Ответ 5
public class Test {
public static PrintStream ps = System.out.printf("%s", "hello");
}
Довольно странный вопрос для интервью. Он будет печатать привет и бросать Exception in thread "main" java.lang.NoSuchMethodException
.
Ответ 6
Ответ определенно Нет.
По крайней мере, вам нужен статический блок или вам нужен пустой 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"
Ответ 7
возможно со статическим блоком, который выполняется перед основным методом
Ответ 8
@Аникет Тхакур Поскольку я не могу прокомментировать из-за моих моментов. но следующие программы печатают сообщение, прежде чем он войдет в main. ПРИМЕЧАНИЕ. Я использовал Java 7 и Java 8. оба работают нормально и запускают статический блок перед основным.
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()");
}
}
Ответ 9
введите описание изображения здесь
введите описание изображения здесь
ПРИМЕЧАНИЕ. Эта программа будет работать ТОЛЬКО с jdk 1.6.