static的作用:
“static方法就是没有this的方法。在static方法内部不能调用非静态方法,反过来是可以的。而且可以在没有创建任何对象的前提下,仅仅通过类本身来调用static方法。这实际上正是static方法的主要用途。”–引用《Java编程思想》
我的一个朋友和我说,我看了很多资料都说Static是省内存的,你为什么说它浪费内存,有没有根据?
ok,告诉大家,static修饰一个方法也好,变量也好,(static是不允许用来修饰局部变量,用xxx的一句话来说,不要总是问为什么,java就是这么规定的)在类加载的时候就已经分配了内存空间,在不管你用不用都占用这个位置。我说static浪费内存是针对 static修饰的方法和单例模式来讲。
举个例子
当然下面说的静态方法不依赖于任何对象就可以进行访问,而且之开辟一次内存空间,不用new来new去。只要被static修饰了,就可以通过类名去访问。
public class SingleCase {
private SingleCase () {
}
public static void newsingle() {
}
}
SingleCase.newsingle();
下面这种方式可以确保用户只能获取一个实例。同时,只有在用这个实例调用方法的时候,方法才被加入到内存中,当对象不用的时候,GC会将方法回收,效率很高。
public class SingleCase {
/**
* 单例对象实例
*/
private static SingleCase instance = null;
public static SingleCase getInstance() {
if (instance == null) {
instance = new SingleCase ();
}
return instance;
}
//普通方法
public void newsingle() {
}
}
SingleCase.getInstance().newsingle();