欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  Java

Java关键字之static的详细详情介绍

程序员文章站 2022-04-01 10:01:47
...
static 表示“全局”或者“静态”的意思,用来修饰成员变量成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念

被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,

Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。

用public修饰的static成员变量和成员方法本质是全局变量和全局方法,当声明它类的对象时,不生成static变量的副本,而是类的所有实例共享同一个static变量

static变量前可以有private修饰,表示这个变量可以在类的静态代码块中,或者类的其他静态成员方法中使用(当然也可以在非静态成员方法中使用--废话),但是不能在其他类中通过类名来直接引用,这一点很重要。实际上你需要搞明白,private是访问权限限定,static表示不要实例化就可以使用,这样就容易理解多了。static前面加上其它访问权限关键字的效果也以此类推。

static的一些特性:

(1) static变量也称作静态变量,静态变量和非静态变量的区别是:静态变量被所有的对象所共享,在内存中只有一个副本,它当且仅当在类初次加载时会被初始化。而非静态变量是对象所拥有的,在创建对象的时候被初始化,存在多个副本,各个对象拥有的副本互不影响。

(2)statice有两种作用:一、只想为某特定域分配单一的存储空间,而不考虑要去创建多少对象,甚至不创建对象;二、希望某个方法不与包含他的任何对象关联在一起,也就是不创建任何对象也能调用其中的任何方法。

(3)被statice修饰的任何成员变量和成员方法独立于该类的任何对象,它不依赖类的任何对象,对所有实例共享。

(4)静态变量在内存中只有一个拷贝,jvm只对静态分配一次内存,加载类的过程中就完成对静态变量的内存分配,可用类名直接访问。

(5)静态代码是和class绑定的,class装载成功就表示执行了你的静态代码,而且以后不会再走这套静态代码了。Class.forName()的作用是要求JVM查找并加载指定的类,也即是说JVM会执行该类的静态代码段。

(6)静态的方法属性初始化,是在加载类的时候初始化。而非静态方法属性初始化。

示例:

public class Test {
     static int i;
     static
     {
          i++;
          System.out.println("outt i:"+i);
     }
     static void outi()
     {
            i++;
            System.out.println("output i:"+i);
     }
     public static void main(String [] argStrings)
     {
          Test test=new Test();
          test.outi();
     }
}

输出结果:

outt i:1
output i:2



以上就是Java关键字之static的详细详情介绍的详细内容,更多请关注其它相关文章!

相关标签: Java,static