static是静态修饰符,什么叫静态修饰符呢?大家都知道,在程序中任何变量或者代码都是在编译时由系统自动分配内存来存储的,而所谓静态就是指在编译后所分配的内存会一直存在,直到程序退出内存才会释放这个空间,也就是只要程序在运行,那么这块内存就会一直存在。这样做有什么意义呢?在Java程序里面,所有的东西都是对象,而对象的抽象就是类,对于一个类而言,如果要使用他的成员,那么普通情况下必须先实例化对象后,通过对象的引用才能够访问这些成员,但是有种情况例外,就是该成员是用static声明的(在这里所讲排除了类的访问控制),例如:
package edu.test.ch6;
public class Book {
private String title;
private String author;
private double price;
public static int counter = 0;
public Book(){
this.title = "java";
this.author = "xiaoming";
this.price = 2.50;
counter++;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public static int getCounter() {
return counter;
}
public static void setCounter(int counter) {
Book.counter = counter;
}
}
package edu.test.ch6;
public class BookTest {
public static void main(String[] args) {
Book b = new Book();
Book[] bb = new Book[4];
System.out.println("bookname: " + b.getTitle());
System.out.println("bookauthor: " + b.getAuthor());
System.out.println("bookprice: " + b.getPrice());
for (int i = 0; i< 4; i++) {
bb[i] = new Book();
}
System.out.println(Book.getCounter());
}
}
这段代码里面Tstatic类有一个static的int变量counter用于统计书的数量。