静态初始化和非静态初始化
他们之间的区别.
.书上的没看明白.
谢谢大家.

解决方案 »

  1.   

    给你个例子,你看看下面的输出是多少??
    package com.sample.action;import java.util.Calendar; 
    public class Test{ 
    public static final Test INSTANCE = new Test(); 
    private  int size = 6; 
    private static int THIS_YEAR = Calendar.getInstance().get(Calendar.YEAR);
    private  Test(){
    size = THIS_YEAR - 1930; 
    }
    public int getSize(){ 
    return size; 

    public static void main(String[] args){ 
    System.out.println(INSTANCE.getSize()); 


    在static方法里面调用static变量,那种全局的,是没机会初始化的,呵呵。
    看看下面的代码package com.sample.action;import java.util.Calendar; 
    public class Test{ 
    public static final Test INSTANCE = new Test(); 
    private static int size = 6; 
    private static int THIS_YEAR = Calendar.getInstance().get(Calendar.YEAR);
    static{
    size = THIS_YEAR - 1930; 
    }
    private  Test(){
    }
    public int getSize(){ 
    return size; 

    public static void main(String[] args){ 
    System.out.println(INSTANCE.getSize()); 

    } 你看看输出是多少?
    你debug个断点跟跟看就明白了。
      

  2.   

    一楼的.一些函数我看不明白哈.
    我刚学不久.private static int THIS_YEAR = Calendar.getInstance().get(Calendar.YEAR); .但是我
    但是我想那是引入YEAR的..
    ..第一个会有输出. 78
    .第二个 为  6 不晓得对不..
    ...
    ..在书上的例子是用自由取值的方法去弄的..
    ..
    ...一个是静态的.
    .一个不是.
    ...
    ...他们会输出不 同.
    ...
    ...应该就是那样.
    .....我讲下我的理解.看看对不..不对请指出.
    .....
    .....静态的就是在类加载的时候就会被初始化.
    ...在那个时候就已经在内存中存在位置.
    .而非静态的则需要在对象调用的时候.
    ...才会被初始化..
    ......不然不调用对象则不会被初始化