java中static的用法

来源:互联网 发布:windows pe 启动盘 编辑:程序博客网 时间:2024/05/29 14:31

    在java中,static的用法以我现有的了解有以下3中:

    1、修饰成员变量:如果一个成员被声明为static,它就能在类的任何对象创建之前被访问,而不必引用任何对象。声明为static的变量实质上就是全局变量,当声明一个对象时,并不产生static变量的拷贝,而是所有该类的实例变量共用同一个static变量;

    2、修饰成员方法:如果一个成员被声明为static,它就能在类的任何对象创建之前被访问,而不必引用任何对象。声明为static的方法有以下几条限制:

          它们仅能调用其他的static方法;

          它们只能访问static数据;

          它们不能以任何方式引用this或者super。

    3、修饰一个内部类(是否能修饰普通类有待考证):

          静态内部类和非静态内部类的区别:

          在非静态内部类中不可以声明静态成员,也就是说只有静态内部类才能定义静态的成员变量和成员方法;

          非静态内部类可以随意访问外部类中的成员变量和方法,即使这些成员被修饰为private。但不能从静态内部类的对象中访问外部类的非静态成员变量和方法;

          非静态内部类的实例一定要绑定在外部类的实例中,即在创建非静态内部类之前要先在外部类中要利用new关键字来创建这个内部类的对象非静态内部类的对象是依附在外部类对象之中的;但在定义静态内部类的时候,是不需要定义绑定在外部类的实例上的,即要在一个外部类中定义一个静态的内部类,不需要利用关键字new来创建内部类的实例。例如:

静态内部类:

  1. package innerClass;   
  2. public class OutClass1 {   
  3.     public int oid;   
  4.     public String oname;   
  5.     public static class InnerStaticClass1{   
  6.         public int iid;   
  7.         public String iname;   
  8.     }   
  9.  
  1. package innerClass;   
  2. import innerClass.OutClass1.InnerStaticClass1;   
  3. public class Test1 {   
  4.     public static void main(String[] args) {   
  5.         OutClass1 oc=new OutClass1();   
  6.         InnerStaticClass1 ic=new InnerStaticClass1();   //不依赖与外部类的实例 
  7.     }   
  8.  

非静态内部类:

  1. package innerClass;   
  2. public class OutClass2 {   
  3.     public int oid;   
  4.     public String oname;   
  5.     public class InnerClass2   
  6.     {   
  7.         public int iid;   
  8.         public String iname;   
  9.     }   
  10.   
  1. package innerClass;   
  2. public class Test2 {   
  3.     public static void main(String[] args) {   
  4.         OutClass2 oc=new OutClass2();   
  5.         OutClass2.InnerClass2 ic=oc.new InnerClass2(); //依赖与外部类的实例  
  6.     }   


原创粉丝点击