注意{System.out.println("test 1");}
在{}里面
public class A
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
// add
public static void main(String arg[]){
new A();
}
}
试一下吧,我现在没有jdk。
在{}里面
public class A
{
{
System.out.println("test 1");
}
public A()
{
System.out.println("test 2");
}
// add
public static void main(String arg[]){
new A();
}
}
试一下吧,我现在没有jdk。
System.out.println("test 1");
}
这段程序默认为static。正常来写,应该是:
static {
System.out.println("test 1");
}和所有static变量/方法一样,这段程序在类第一次被加载时运行。
这再里再说一次。
static{}块中的内容是在编译的时候就加载的,不论类创建了几个实例,只会执行一次。
而{}块的内容则是在类创建的实例的时候就会执行,每创建一个实例就会执行一次。看下面的代码对你会有帮助。
class A {
public A() {
System.out.println("AAA");
}
{
System.out.println("456");
}
}public class B extends A {
B() {
this(12);
System.out.println("BBB");
}
B(int x) {
System.out.println("CCC");
}
{
System.out.println("123");
}
public static void main(String[] args) {
new B();
}
}The output is:
456
AAA
123
CCC
BBB
因为语法无错误
字符界面下运行应该没有输出
因为没有MAIN()
用别的调用应该输出:
test 1
test 2