2013-08-17 2 views
4

Horstmann в Core Java 7-е издание пишет, что можно показать Hello, world без основного метода. Это делается следующим образом:Привет, мир без основного метода (от Horstmann)

public class Hello{ 
    static{ 
     System.out.println("Hello, world"); 
    } 
} 

Он говорит, что прежде всего Здравствуйте, мир будет написан. И только тогда вы получите сообщение об ошибке.

Я использую

java version "1.7.0_21" 
Java(TM) SE Runtime Environment (build 1.7.0_21-b11) 
Java HotSpot(TM) 64-Bit Server VM (build 23.21-b01, mixed mode) 

И я не эта модель. Это уже исправлено?

+0

так, как вы запустите его – Satya

+0

Javac Hello.java затем Java Привет – Kifsif

+0

и что ошибка вы получаете – Satya

ответ

6

Java 7 ищет основной метод перед загрузкой класса. Это изменение поведения из предыдущих java-версий и, следовательно, ваш блок static не выполняется. В предыдущих версиях поведение состояло в том, что JRE использовала поиск основного метода после загрузки класса и после выполнения статических блоков.

Так что если вы запустите свой код на любой версии до java 7, вы увидите, что блок static выполняется.

Книга, которую вы читаете, не могут быть написаны для Java 7, но JDK JRE & вы используете для выполнения образцов версии 7.

совет: В качестве хорошей практики чтения вы должны попытаться запустите образцы книг в той же версии, что указаны в книге, чтобы избежать путаницы. Хотя в этом случае ваша путаница приведет вас к изучению чего-то нового о java 7.

2

До Java 7 JVM используется для загрузки класса перед поиском метода main().

public class Hello{ 
    static{ 
     System.out.println("Hello, world"); 
    } 
} 

Итак, когда вы выполняете это, java Hello класса будет загружены первым и Hello, world будет напечатан (статические методы/блок выполняется, когда классы загружаются и классы загружаются, когда они ссылаются). Затем JVM будет искать метод main() в классе Hello и будет вызывать ошибку, как ее нет. Однако это исправлено в java 7. Поэтому, если вы используете java 7, вы сразу получите ошибку.

Смежные вопросы