如下:
一种带有static
static{
    //代码内容
    //........
    //代码结束
}还有就是花括号前面啥也没有的。
{
    //代码内容
    //........
    //代码结束
}问题:
1.还有什么其他情况么?
2.这代表什么意思?谢谢高手们抽空解答!

解决方案 »

  1.   

    Java和其他语言一样
    以一对花括号作为域的标识
    代表一段代码的开始和结束
    前面有static表示一个静态块
      

  2.   

    我的理解 第一static{}表示是个静态的方法 程序执行的时候它就自动执行 就好比定义一个静态的变量 会写到内存中
      

  3.   

    import org.apache.log4j.Logger;public class PropertyUtil { /**
     * @param args
     */
    public static void main(String[] args) {
    PropertyUtil  test01 = new PropertyUtil();
    System.out.println(test01.getProperty("libowifi"));
    }
    /*
     * 获取属性文件的值
     */
    private static final Logger logger = Logger.getLogger(PropertyUtil.class);
    private static Properties properties;
    static {
    // 加载属性文件
    try {
    InputStream inputStream = PropertyUtil.class.getClassLoader().getResourceAsStream("haixi.properties");
    try {
    properties=new Properties();
    properties.load(inputStream);
    } catch (Exception e) {
    e.printStackTrace();
    } finally {
    inputStream.close();
    }
    } catch (Exception e) {
    logger.error(e.getMessage());
    }
    } public static String getProperty(String key) {
    return properties.getProperty(key);
    }
    }看到的原文例子。
    也见过仅仅只有花括号的代码{}。
    但不明白为什么?谢谢指点。
      

  4.   

    static{
      //代码内容
      //........
      //代码结束
    }
    静态代码域,在类的加载的时候调用一次,整个生命周期只会调用一次。
    {
      //代码内容
      //........
      //代码结束
    }
    普通代码域,在类的每个对象创建的时候调用。代码域中定义的变量都是局部的,只有域中的代码可以调用。
      

  5.   

    private static final List<String> list = new ArrrayList<String>(){
        {
           add("hello");
           add("world");
        }
    };
      

  6.   

    static{}静态代码块,在类第一次被调用或实例化的时候就会被执行。 
    静态代码块只会执行一次,一般会用来初始化一些值,并且在所有对象中全局共享。
    {}非静态代码块,非静态代码块是在创建对象时自动执行的代码,不创建对象不执行该类的非静态代码块。 
    举个例子:
    public class TestStaticCon {           public static int a = 0;   
          
            static {   
                a = 10;   
                System.out.println("父类的非静态代码块在执行a=" + a);   
            }   
               
            {   
                a = 8;   
                System.out.println("父类的非静态代码块在执行a=" + a);   
            }   
          
            public TestStaticCon() {   
                this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法   
                System.out.println(a);   
                System.out.println("父类无参构造方法在执行a=" + a);   
            }   
          
            public TestStaticCon(String n) {   
                System.out.println(n);   
                System.out.println(a);   
          
            }   
          
            public static void main(String[] args) {   
                TestStaticCon tsc = null;   
                System.out.println("!!!!!!!!!!!!!!!!!!!!!");   
                tsc = new TestStaticCon();   
            }/*Output:  
                   父类的非静态代码块在执行a=10  
                   !!!!!!!!!!!!!!!!!!!!!  
                   父类的非静态代码块在执行a=8  
                   a在父类带参构造方法中的值:10  
                   8  
                   8  
                   父类无参构造方法在执行a=8  
                   */  
          
        }  public class TestStaticCon {           public static int a = 0;   
          
            static {   
                a = 10;   
                System.out.println("父类的非静态代码块在执行a=" + a);   
            }   
               
            {   
                a = 8;   
                System.out.println("父类的非静态代码块在执行a=" + a);   
            }   
          
            public TestStaticCon() {   
                this("a在父类带参构造方法中的值:" + TestStaticCon.a); // 调用另外一个构造方法   
                System.out.println(a);   
                System.out.println("父类无参构造方法在执行a=" + a);   
            }   
          
            public TestStaticCon(String n) {   
                System.out.println(n);   
                System.out.println(a);   
          
            }   
          
            public static void main(String[] args) {   
                TestStaticCon tsc = null;   
                System.out.println("!!!!!!!!!!!!!!!!!!!!!");   
                tsc = new TestStaticCon();   
            }/*Output:  
                   父类的非静态代码块在执行a=10  
                   !!!!!!!!!!!!!!!!!!!!!  
                   父类的非静态代码块在执行a=8  
                   a在父类带参构造方法中的值:10  
                   8  
                   8  
                   父类无参构造方法在执行a=8  
                   */  
          
        }  
      

  7.   

    谢谢 12 楼 :getfocus_yj (太给力了!!!)同时谢谢其他各位的指点。
      

  8.   

    您好:
    我只是想知道其中的花括号的意思:
    {}
    至于vector list hashtable 什么的好像跑题了吧
      

  9.   

    六楼说的不完全,如下红色部分为一个匿名构造函数,在所有构造函数之前被执行,后于静态块和静态变量。
    static{
      //代码内容
      //........
      //代码结束
    }
    静态代码域,在类的加载的时候调用一次,整个生命周期只会调用一次。
    {
      //代码内容
      //........
      //代码结束
    }
    代码域中定义的变量都是局部的,只有域中的代码可以调用。