static的用法

1.类成员

 

通常,类成员通过创建类实例来访问。而若将类成员声明成static属性后,它属于一个类,可以通过类名被访问,而不需要创建任何类的实例。

类变量和类方法:被声明为static属性的成员变量和成员方法

实例变量和实例方法:没有声明static属性的,访问时需要先创建对象

 

类的所有实例共享类变量,每个实例对类变量的修改都会直接影响到其他实例

在类方法中不能使用this或super,并且不能创建内部类的实例

 

访问类成员有三种方法:

1)用类名访问,如Member.setClassVar(6)

2)创建实例后,用实例访问,如m1.setClassVar(6)

3)当调用类成员时,如果是在同一个类中,则可直接调用

 

如下例:

class Member{

  static int classVar;

  int instanceVar;

  static void setClassVar(int i){

     classVar=i;

  }

  void setInstanceVar(int i){

   instanceVar=i;

   classVar=i;

  }

  public static void main(String a[]){

   Member m1=new Member();

   m1.setInstanceVar(9);//不能直接调用

   m1.setClassVar(6);//或setClassVar(6),或Member.setClassVar(6)

   System.out.println("classVar="+classVar+"instanceVar="+m1.instanceVar);//instanceVar不能直接调用

  }

}

 

类变量的初始化:类变量的初始化不使用构造方法进行,可通过以下途径进行

1)使用默认值。具体和实例变量相同。同样,用final修饰的类值类变量不能使用默认值,否则编译时不能通过

2)声明时初始化,如public static int a=6;

3)使用静态初始化块,当初始化不适合于一个表达式时,可以采用

如:   static double buffer[]=new double[BUFFER_SIZE];

         static

         {

                for(int i=0; i<buffer.length; i++)

                    buffer[i]=java.lang.Math.random();

         }

4)使用一个类方法初始化,如上面例子

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值