本帖最后由 MaxBinaRy 于 2011-03-09 11:29:15 编辑

解决方案 »

  1.   

    分别?
    static 有多少个意思啊?
    不管 是 静态属性,静态方法 静态块  都是在全局数据区分配内存
    也就是 程序一运行 这些 static的 就已经分布在内存中,并且程序可以共享他们
      

  2.   

    static InputStreamReader in;   //都是静态属性。处于静态区。可以不创建实例就直接调用
    static BufferedReader reader;
     static
        {
            in=new InputStreamReader(System.in);
            reader = new BufferedReader(in);        
        }
      
    静态区。表示不用NEW已经执行了。
    static String readString()静态方法。和静态属性一样。可以通过ReadData.readString()这种方式直接调用。而不用先NEW一个类实例。
      

  3.   

    package com.test;import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.InputStreamReader;public class Test1 {

    private static InputStreamReader is = init();
    private InputStreamReader is2 = init2(); 

    static {
    System.out.println("执行静态代码块");
    }

    public static InputStreamReader init() {
    System.out.println("初始化静态成员变量");
    return new InputStreamReader(System.in);
    }

    public InputStreamReader init2() {
    System.out.println("初始化非静态成员变量");
    return new InputStreamReader(System.in);
    }


    public static void main(String[] args) {
    new Test1();
    }
    }/*
     * 由执行顺序,我们可以得到以下结论:
     * 1.静态属性在类加载进内存时完成加载,存放在data segment(数据区),并且只加载一次,只有一份
     * 2.静态方法在类加载进内存时完成加载,只有一份
     * 3.静态代码块在类加载进内存时完成加载,但是它的加载在静态属性加载之后,并且仅仅加载一次
     * 4.非静态属性在创建对象时得到初始化,也就是与类挂钩
     *   
     */
      

  4.   

    这些东西很纠结  
      简单的说  静态的 程序运行自动加载
    里面的属性或方法不需要再去new新的对象就能共享
      Baidu 吧  Google吧
      

  5.   

    不管 是 静态属性,静态方法 静态块 都是在全局数据区分配内存
    也就是 程序一运行 这些 static的 就已经分布在内存中,并且程序可以共享他们