java中static的作用

来源:互联网 发布:数组下标长度没有限制 编辑:程序博客网 时间:2024/05/21 08:00

static是表示的是静态修饰符。


什么是静态修饰符呢?大家都知道,在程序中任何变量或者代码都是编译时由系统自动分配内存来存储。

所谓静态的,就是指编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。


在java程序中,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员

。还有一种就是通过static声明来实现。如下所示

定义静态方法

public class Student {
    public static String x1(){
        return "你好啊,测试static";
    }
}

测试时可以直接通过类名来调用

public static void main(String[] args) {
        String a= Student.x1();
        System.out.println(a);
    }
}

---------------------------------------------------------------------------------------------------

然后就是被static修饰过的成员变量,如下示例

public class Student {
    static int i;
    public static String x1(){
        return "你好啊,测试static";
    }
    //以下为带参无参的两个构造方法
    public  Student(){
        i=4;
    }
    public   Student(int j){
        i=j;
    }
}

public static void main(String[] args) {
        String a= Student.x1();
        System.out.println(a);
        //----------------------------------------------
        Student s=new Student(5);
        Student ss = new Student();
        System.out.println(s.i);
        System.out.println(ss.i);
        System.out.println(s.i);

    }


这段代码中Student类中有静态变量i,有两个构造方法,第一个将i的值初始为4,第二个用于初始化i为传进函数的值,在main中所传的值是5。

程序首先声明的是带参数的构造方法,此时i=5,第二个声明了无参的构造方法,此时i=4。那么按照输出语句依次执行应该是5,4,4。

可是程序走到了最后输出的是4,4,4。这是因为成员变量i是static声明的,该类中的所有对象共享这个成员变量i。在main方法中第一个i被实例化成了5是没错,

紧接着i就被实例化为4,那么之前实例化的那个成员变量i也变成了4,所以输出结果为4,4,4


静态代码块如下

static

{

     System.out.println("我是静态代码块");

}

一个类加载的时候会执行一次static代码块,只会执行一次,不会执行第二次。



原创粉丝点击