static{ System.out.println("static"); }这段是静态初始代码块,在类加载的时候运行一次。 若把上述代码改为:public class Test { { System.out.println("static"); } public static void main(String[] args) { new Test(); System.out.println("main"); new Test(); } }执行结果为: static main static非静态初始代码块,在构造对象的时候运行. 在构造对象的初始化属性时, 同时会运行类的初始代码块。main是一个静态方法,是java执行程序的一个入口。 还有其他什么特别的吗?
和构造函数是有区别的 如Test a = new Test() ; Test b = new Test() ; 会调两次构造方法 而 static 永远只调一次
面试经常考!一般考的都不止这个! 以前笔试有类似这样的一道public class Test { public Test (){ System.out.println("test..."); } static { System.out.println("static"); } public static void main(String[] args) { System.out.println("main"); new Test(); } } 够BT吧,不给你运行的工具,我看你是有点难做出来吧
static{
System.out.println("static");
}这段是静态初始代码块,在类加载的时候运行一次。
若把上述代码改为:public class Test {
{
System.out.println("static");
} public static void main(String[] args) {
new Test();
System.out.println("main");
new Test();
}
}执行结果为:
static
main
static非静态初始代码块,在构造对象的时候运行. 在构造对象的初始化属性时, 同时会运行类的初始代码块。main是一个静态方法,是java执行程序的一个入口。
还有其他什么特别的吗?
难道没发现这个static有点类似构造函数功能吗,没发现是程序启动就执行么,而且仅执行一次,你们怎么会认为这种功能用不到?
原因很简单,就是平时自己没这么用过
想啊,这种需求不会少啊,当然你完全可以用其他的代码来代替,不过当你这些东西都很通的时候,自己运用灵活自如多好!
如Test a = new Test() ;
Test b = new Test() ;
会调两次构造方法
而 static 永远只调一次
以前笔试有类似这样的一道public class Test {
public Test (){
System.out.println("test...");
}
static {
System.out.println("static");
}
public static void main(String[] args) {
System.out.println("main");
new Test();
}
}
够BT吧,不给你运行的工具,我看你是有点难做出来吧