美文网首页
static 关键字

static 关键字

作者: 张轻舟 | 来源:发表于2018-08-23 22:30 被阅读7次

static 修饰符能够与变量、方法一起使用,表示是“静态”的。

静态变量和静态方法能够通过类名来访问,不需要创建一个类的对象来访问该类的静态成员,所以static修饰的成员又称作类变量和类方法。静态变量与实例变量不同,实例变量总是通过对象来访问,因为它们的值在对象和对象之间有所不同。

例子:

public class Demo { static int i = 10; int j; Demo() { this.j = 20; } public static void main(String[] args) 
{ System.out.println("类变量 i=" + Demo.i); 
Demo obj = new Demo(); 
System.out.println("实例变量 j=" + obj.j); } }

运行结果:
类变量 i=10
实例变量 j=20
static 的内存分配

静态变量属于类,不属于任何独立的对象,所以无需创建类的实例就可以访问静态变量。之所以会产生这样的结果,是因为编译器只为整个类创建了一个静态变量的副本,也就是只分配一个内存空间,虽然有多个实例,但这些实例共享该内存。实例变量则不同,每创建一个对象,都会分配一次内存空间,不同变量的内存相互独立,互不影响,改变 a 对象的实例变量不会影响 b 对象。

请看下面的代码:

public class Demo { static int i; int j; public static void main(String[] args) 
{ Demo obj1 = new Demo(); obj1.i = 10; obj1.j = 20; Demo obj2 = new Demo(); 
System.out.println("obj1.i=" + obj1.i + ", obj1.j=" + obj1.j); 
System.out.println("obj2.i=" + obj2.i + ", obj2.j=" + obj2.j); } }
运行结果:
obj1.i=10, obj1.j=20
obj2.i=10, obj2.j=0

上面的代码中,i 是静态变量,通过 obj1 改变 i 的值,会影响到 obj2;j 是实例变量,通过 obj1 改变 j 的值,不会影响到 obj2。这是因为 obj1.i 和 obj2.i 指向同一个内存空间,而 obj1.j 和 obj2.j 指向不同的内存空间,请看下图:
注意:静态变量虽然也可以通过对象来访问,但是不被提倡,编译器也会产生警告。


qq_pic_0.jpg

注意:static 的变量是在类装载的时候就会被初始化。也就是说,只要类被装载,不管你是否使用了这个static 变量,它都会被初始化。

小结:类变量(class variables)用关键字 static 修饰,在类加载的时候,分配类变量的内存,以后再生成类的实例对象时,将共享这块内存(类变量),任何一个对象对类变量的修改,都会影响其它对象。外部有两种访问方式:通过对象来访问或通过类名来访问。

相关文章

  • OC中static、const、extern关键字理解

    static关键字 static关键字用于修饰变量。 static修饰局部变量当使用static修饰局部变量时, ...

  • static关键字

    Static关键字概述 static(静态)关键字可以用于修饰变量、方法和代码块。我认为static关键字的主要用...

  • 【Java】关键字

    一、 static关键字 static关键字的总结: static关键字 可以再没有创建对象的时候进行调用类的元素...

  • Java学习Day03

    今日学习内容总结 Static关键字 Arrays类 Math类 继承 Static关键字 一旦用了static,...

  • java基础-day11-static关键字

    static关键字和接口 1. static关键字【重点】 1.1 static修饰静态成员变量 1.1.1 为什...

  • C语言中的static关键字

    @TOC C语言中的static关键字 static 关键字,意为静态。 static 变量 特性:全局变量在函数...

  • Static关键字

    C语言中的static关键字和Java的static关键字意义不一样。 1 用static修饰函数 static用...

  • C基础知识

    基础问题 1.static关键字和const关键字。 static: 作用于变量时:用static声明局部变量--...

  • 13.面向对象进阶—静态关键字static

    面向对象进阶 静态关键字static static关键字的作用,修饰成员变量的用法 static是静态的意思,可以...

  • Java学习13:static关键字,this关键字

    static关键字 static翻译为“静态的”。所有static关键字修饰的都是类相关的,类级别的。所有stat...

网友评论

      本文标题:static 关键字

      本文链接:https://www.haomeiwen.com/subject/yzjmiftx.html