作为一个初学者,最令我好奇的就是static,无论是声明类,还是函数,还是变量基本上都有static。这是我学习C不常见的,所以为了搞懂static的作用,我查阅了先关的资料,比得出下面自己的见解。
用static修饰的有:静态变量,静态方法,静态类。当声明静态之后,当声明对象的时候不产生拷贝,都只是共用。
1.静态变量:我认为静态变量就是象全局变量一样,任何地方都是一样的。看下面的例子:
public class AboutStatic {
static class Book{
double price;
static int num=100;
public void addBook(){
num++;
System.out.println("this book price is:"+price+"and the book's number is:"+num);
}
}
public static void main(String[] args) {
Book b1=new Book();
b1.price=10;
b1.addBook();
Book b2=new Book();
b2.price=10;
b2.addBook();
}
}
这里输出的结果是:
this book price is:10.0and the book's number is:101
this book price is:10.0and the book's number is:102
这里,可以实例化不同的对象,但静态变量还是原来那个,不产生拷贝,是共用的。这和全局变量是很相似的。
2.静态方法:感觉很静态变量很相像,一次声明到处能用,而且不用实例化也能用。看下面的例子:
public class AboutStatic {
public static void main(String args[]){
Hellow.Say();
}
public static class Hellow{
public static void Say(){
System.out.println("hellow world");
}
}
}
结果是:
hellow world
代码中就没用实例化类,但也能使用Hellow类中的Say()方法。但值得我们注意的是如果如果静态方法调用变量的话,这个变量必须也是静态的。
3.静态类:静态的类不就是静态变量和静态方法组成的么。要使用静态方法,必须将类声明成静态的,就像静态方法调用变量,变量必须是静态的样。总之,静态一家亲。值得注意的静态类中不能使用this和super。
总之,“如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static”。