呵呵,我的错,看来我举例不好!
没有把问题本质搞出来,不过我确实不理解为什么要用,所以也难举出来。只是我看了初始化块的用法,不明白为什么要用,以及什么时候用何时,以下是我自己作练习时的例子。public class Chushihua1 extends Father{
{
int a=9;
if(a>8){
System.out.println("执行Chushihua1的普通初始块");
}
}
static{
System.out.println("执行Chushihua1的静态化初始块");
}
public Chushihua1(){
System.out.println("执行Chushihua1的无参数构造器");
}
public static void main(String[] args){
new Chushihua1(); //执行Father的静态化初始块
//执行Chushihua1的静态化初始块
//执行Father的普通初始块
//执行Father的无参数构造器
//执行Chushihua1的静态化初始块
//行Chushihua1的无参数构造器
}
}class Father{
{
System.out.println("执行Father的普通初始块");
}
static{
System.out.println("执行Father的静态化初始块");
}
public Father(){
System.out.println("执行Father的无参数构造器");
}
}
没有把问题本质搞出来,不过我确实不理解为什么要用,所以也难举出来。只是我看了初始化块的用法,不明白为什么要用,以及什么时候用何时,以下是我自己作练习时的例子。public class Chushihua1 extends Father{
{
int a=9;
if(a>8){
System.out.println("执行Chushihua1的普通初始块");
}
}
static{
System.out.println("执行Chushihua1的静态化初始块");
}
public Chushihua1(){
System.out.println("执行Chushihua1的无参数构造器");
}
public static void main(String[] args){
new Chushihua1(); //执行Father的静态化初始块
//执行Chushihua1的静态化初始块
//执行Father的普通初始块
//执行Father的无参数构造器
//执行Chushihua1的静态化初始块
//行Chushihua1的无参数构造器
}
}class Father{
{
System.out.println("执行Father的普通初始块");
}
static{
System.out.println("执行Father的静态化初始块");
}
public Father(){
System.out.println("执行Father的无参数构造器");
}
}
int i = 0
}
那么你创建对象 A a = new A();
之后就可以使用a.i属性
Class A{
{
int i = 0;
}
}
放在块里面,i就不是A的成员,就不能使用a.i属性,这样该明白了吧?
方法是动态绑定的。
楼主的问题中可以这么想下:
当 a 为全局变量时 在创建一个对象就要在堆中为它分配空间并初始化(默认为 0 );
而当 a 为局部变量时, 因为其在方法内,也就是说也是动态绑定的。
可以这么理解,在创建对象的时候并不给它初始化,只是在调用方法的时候加载到栈中,为其在栈中分配一个空间(没有默认值)。
慢慢吭就可以了
我现在也是在吭的过程中
共同努力吧
private static HashMap days = new HashMap(); static {
days.put("January", 31);
days.put("February",28);
days.put("March",31);
//.....
} public static getDays(String month) { return days.get(month);}
}非静态的初始化块没什么用,只是为了保持语法上的一致。
System.out.println("TestThread") ;
}
public static void main(String args[]) {
new TestThread() ;
new TestThread() ;
System.out.println("Hello") ;
}
static {
System.out.println("static") ;
}
}static
TestThread
TestThread
Hello