对象初始化的顺序:
先全部赋为0(0、false、null)
然后按定义处赋值表达式进行初始化
然后执行构造函数进行初始化构造函数可以有多个,可以进行不同的初始化
而定义处初始化在构造函数之前,所以可以保证一个默认初值

解决方案 »

  1.   

    第二个问题你想怎么证明?
    static函数的运行,不依赖于对象,但依赖于类
    因此static函数运行前必须进行类的加载
    而类的加载过程中,就包含了static成员属性的创建、初始化过程
    还包含了static block的运行
    然后才能执行statci函数,此时,static成员属性的初始化和static block都已经完成了
      

  2.   

    楼主对类和对象的加载、初始化有兴趣的话
    请参看:Thinking in Java 2nd 前7章
      

  3.   

    用new创建对象(特别是小的、简单的变量)并不是非常有效,因为new将对象置于“堆”里。不是用new创建变量,而是创建一个并非句柄的“自动”变量。这个变量容纳了具体的值,并置于堆栈中,能够更高效地存取。他们放的位置不同。
      

  4.   

    一种情形是只想用一个存储区域来保存一个特定的数据——无论要创建多少个对象,甚至根本不创建对象。另一种情形是我们需要一个特殊的方法,它没有与这个类的任何对象关联。也就是说,即使没有创建对象,也需要一个能调用的方法。为满足这两方面的要求,可使用static(静态)关键字。
      

  5.   

    呵呵谢谢2位这2哥问题我算弄懂了另danceflash(Wine)兄我看的正是thinking in java 2nd
    也正好吧前7章看完自己自学的所以难免有不懂的地方,希望能继续指教哦~