学到实例和静态的小小疑问
完全感受不到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";
}