首页 > 代码库 > static关键字的作用

static关键字的作用

static可以用来定义静态成员变量、静态函数、静态代码块。

静态成员变量的语法特点

定义方法:在成员变量前面加上static

class Person{      static int i; //静态成员变量}

在普通的成员变量中,成员变量的值是属于单个对象的,修改某个成员变量的值对其他成员变量来说是没有影响的。

 

在静态的成员变量中,所有的对象使用的成员变量是同一个,值也一样。当静态成员变量的值被修改了,对象的成员变量值也跟着变化。

静态成员变量可以直接用类名来调用,也可以用对象来调用静态成员变量。

class Test{      public static void main(String args[]){           Person p1 = new Person();           Person p2 = new Person();                     Person.i = 10;           System.out.println("p1的i的值为"+p1.i);           System.out.println("p2的i的值为"+p2.i);           p1.i = 20;           System.out.println("p1的i的值为"+p1.i);           System.out.println("p2的i的值为"+p2.i);      }}

静态成员变量是类层次的变量,属于这一个类,这个类所生成的所有对象使用的都是同一个静态变量,任何一个成员变量的值如果修改,其他所有成员变量的值都会修改。

 

静态成员函数的语法特点

定义方法:在成员函数前面加上static,静态成员函数可以直接用类名来调用

class Person{      static void fun(){           System.out.println("我是静态函数");      }}

 

class Test{      public static void main(String args[]){           Person.fun(); //使用类调用静态函数      }}

 

在静态函数中不能使用非静态的成员变量

class Person{      String name;      static void talk(){           System.out.println("我叫"+name);      }}

个人理解:当在成员函数前不加static时,可用this调用成员变量name(默认情况下省略this),this对象表示调用了这个成员函数的对象。加上static后,使用类名来调用静态函数(没有对象),成员变量必须要用对象来调用,所以在静态函数中不能使用非静态的成员变量(不能使用this),但可使用静态成员变量。

 

静态代码块的语法特点

class Test{      static{           System.out.println("我是静态代码块");      }      public static void main(String args[]){      }}

  

静态代码块没有名字,在装载类的时候执行静态代码块。静态代码块用于给静态变量赋初值。

static关键字的作用