静态工作如何在此示例程序中工作?

时间:2012-09-28 06:54:03

标签: java static

 import java.util.*;
 import net.rim.vm.*;

 public class AddressBook {

   static Vector addresses;
   static PersistentObject persist;


   static {
     // Hash of "net.rim.sample.AddressBook".
     long KEY =  0xa3b3159378f59a29L;
     persist = PersistentStore.getPersistentObject( KEY );
     if( persist.getContents() == null ) {
        persist.setContents( new Vector() );
        persist.commit();
     }
        addresses = (Vector)persist.getContents();
     }
   }

   void add( Address a ) {
     addresses.addElement( a );
     persist.commit();
   }
 }

Source

7 个答案:

答案 0 :(得分:1)

static {....}称为静态块。这些用于初始化静态成员。当加载/初始化类时,执行静态块。

在您的示例中,您使用静态块初始化地址和向量。

答案 1 :(得分:1)

  1. 此类已加载
  2. 静态实例变量已初始化

    static Vector addresses;

    static PersistentObject persist;

  3. 然后执行static block

    static{....}

答案 2 :(得分:1)

ClassLoader首次加载类时,将执行静态块初始值设定项。这是在第一次实例化该类的对象时,或者第一次访问该类的静态成员时发生的。

静态块初始值设定项可以作为实例字段的构造函数。构造函数使用适当的值初始化实例变量,其中静态块初始值设定项为static变量分配适当的值。

当您想通过执行代码(例如函数调用和循环)来初始化静态字段时,静态块很有用,这些代码不能放在简单的赋值语句中。

答案 3 :(得分:0)

这是Static Initializer,假设您只有一个类加载器,它将确保该代码只执行一次(或N次加载器N次)。

静态初始值设定项通常用于初始化Singleton个对象的字段。

答案 4 :(得分:0)

当此类(AddressBook)首次加载到JVM时,将执行静态块。 加载程序后,您的变量可供使用。

答案 5 :(得分:0)

可以在不创建类

的对象的情况下使用这些静态变量

静态矢量地址;      static PersistentObject persist;

如果我们使用静态{---}之类的东西。它被称为静态初始化器。它在创建对象之前初始化

答案 6 :(得分:0)

首先初始化静态变量,然后是静态块