日期:2014-05-20  浏览次数:20629 次

学到实例和静态的小小疑问
完全感受不到static的作用呀,书上说如果一个变量被类的所有实例所公用是要使用static,求大神给个代码看看,40分走起

------解决方案--------------------
静态变量 类型说明符是static。
静态变量属于静态存储方式,其存储空间为内存中的静态数据区(在 静态存储区内分配存储单元),该区域中的数据在整个程序的运行期间一直占用这些存储空间(在程序整个运行期间都不释放),也可以认为是其内存地址不变,直 到整个程序运行结束(相反,而auto自动变量,即动态局部变量,属于动态存储类别,占动态存储空间,函数调用结束后即释放)。静态变量虽在程序的整个执 行过程中始终存在,但是在它作用域之外不能使用。
所以当你的变量被该类的所有对象都使用的时候,需要用static修饰。
------解决方案--------------------
一些工具类,或者单例生成器这样使用:
工具类:LZ看看System或者Math的源码,都是静态方法,提供一些服务,与类本身没多大关系。
单例:

public class Singleton
{

    private static Singleton singleton = new Singleton();

    private volatile transient int no;

    private Singleton()
    {
        this.no = 0;
    }

    public static Singleton getInstance()
    {
        return singleton;
    }

    public void test()
    {
        for (int i = 0; i < 100; i++)
        {
            System.out.println(no);
            no++;
        }
    }
}

这样我们无法直接new一个Singleton对象,获得的都是同一个静态对象。
------解决方案--------------------
如果变量前加 static就是在这个变量声明之后,只要按着顺序执行下去,无论你在哪个方法里改变这个拥有static变量的值,它都将随着改变,注意哈,我的印象当中static 只能是成员变量;至于static方法的话,你就将这个static方法看成一个static变量,调用的时候也跟着改变
------解决方案--------------------

public class Student{
    public static String name = "jim";
 
}

public class Teacher{
    public String name = "jim";
}