之前认为Static修饰的类不用实例化,可以直接用类名点出来就行了。最近又学习了一下Static,又有了新的认识。
static是静态的意思,对静态的理解:比如要使用一个类里面的一个方法或者属性,就要需要进行实例化,需要new出新的东西,所以实例化的过程就是动态。而使用了static就不用实例化,所以用static修饰的类或者方法不用new出新的东西,就属于静态。
用static修饰了一个类下面的内容之后(例如一个变量),这个变量所占的内存就只有一块,不会随着实例化去申请新的内存空间。这也是属于静态的。
下面举例来说明static的功能:
public class Cat{
private static int id = 0;
Cat(){id ++;}
public void info(){
System.out.println(id);
}
public static void main(String arg[]){
Cat mimi = new Cat();
mimi.info();
Cat pipi = new Cat();
pipi.info();
}
}
如上,mimi打印出来的是1,pipi打印出来的是2,因为id用了static修饰,内存只有一块,任何实例化的新对象都不会new 出新的id内存,任何修改只会动原来这一块内存。如果没有static的修饰,那两个对象打印出来的都会是1。
下面新增一行代码:
public class Cat{
private static int id = 0;
Cat(){id ++;}
public void info(){
System.out.println(id);
}
public static void main(String arg[]){
Cat mimi = new Cat();
mimi.info();
mimi.id = 100;//新增代码
Cat pipi = new Cat();
pipi.info();
}
}
因为static是静态的,即使是mimi给id赋的值,但pipi打印出来的是id是101,而不是1。