static关键字

  static关键字,用于修饰成员(成员变量和成员函数),static成员随着类的加载而加载,优先于对象存在。

1.静态变量和成员变量的区别

      1)生命周期

        静态变量是属于类的,随着类的加载而存在,随着类的消失而消失,和对象没有关系

        非静态变量是属于某个对象的,随着对象的创建而存在,每个对象都有该数据的副本,而静态变量只有一个

        2) 成员变量只能被对象调用

        静态变量可以被对象调用,也可以被类名调用

      3)存储不同

        成员变量存储在堆内存的对象中

        静态变量存储在方法区,所以也叫对象的共享数据区

2.静态方法

  访问静态方法通过类名.方法名

  静态方法不能访问非静态变量

  非静态方法可以访问静态变量

  静态属性或方法在类加载的时候产生的

  非静态的属性或方法是在new时候产生的

  静态方法中不可以写this,super关键字

3.静态常量

public static final int a=1;

4.例子

public class StaticSample{

int a=0;//非静态变量

static int staticint=0;//静态变量

StaticSample(int x){

this.a=x;

}

  public static void main(String[] args){

StaticSample t1=new StaticTest(1);

StaticSample t2=new StaticTest(2);

System.out.println("t1.int="+t1.a);

System.out.println("t2.int="+t2.a);

t1.staticint=1;

System.out.println("t1为staticint赋值为1");

System.out.println("t1.staticint="+t1.staticint);

System.out.println("t2.staticint="+t2.staticint);

System.out.println("t2为staticint赋值为5");

t2.staticint=5;

System.out.println("t1.staticint="+t1.staticint);

System.out.println("t2.staticint="+t2.staticint);

}

}

运行结果如下:

t1.int=1

t2.int=2

t1为staticint赋值为1

t1.staticint=1

t2.staticint=1

t2为staticint赋值为5

t1.staticint=5

t2.staticint=5


关注微信公众号,和我一块学习吧!


static关键字_第1张图片

你可能感兴趣的:(static关键字)