public class MyListServlet extends HttpServlet{
private Hashtable hashForm = null;
4 {
5 if(hashForm==null){
6 .....代码
7 }
8 } public void init() throws ServletException {
.....
}
.....
}
请问第4行至第8行这样写可以吗?没见过这种写法,这段代码什么时候被执行?作用是什么?
private Hashtable hashForm = null;
4 {
5 if(hashForm==null){
6 .....代码
7 }
8 } public void init() throws ServletException {
.....
}
.....
}
请问第4行至第8行这样写可以吗?没见过这种写法,这段代码什么时候被执行?作用是什么?
-----------------------------------
不太一样吧? 我只知道执行顺序不同!具体用法没想到.
先执行static属情的赋值,下一步执行static无参函数,然后是普通赋值,最后是构造函数.
而是相当于写在构造函数里的。比如你的这一句
private Hashtable hashForm = null;既是声明,又是初始化。而4-8与之类似,并且与成员变量的声明同属于一个执行级别,会在对象实例化时,先于constructor中的代码执行。
String stra = new String(“Hello World”); {
stra = “Hello”;
System.out.println(“初始块被调用”);
} static{
stra = “STATIC”;
System.out.println(“静态初始块被调用”);
}
public Example(){
stra = “Welcome To Constructor”;
System.out.println(“构造函数被调用”);
} public show(){
System.out.println(stra);
} pubilc static void main(String[] args){
Example example = new Example();
example.show;
}
}运行结果:
静态初始块被调用
初始块被调用
构造函数被调用
Welcome To Constructor希望你能明白!
Example example = new Example();
example.show();
}
我做ASP和ASP.NET都5年了,照样有看不明白的代码。