关于静态变量
book类
public class Book {
private String title;//全局变量
private int pageNum;
private String type;
//所有书本总数
public static int sum;//静态变量
//public int sum;
public static void dayin() { //静态方法可通过类名直接访问
//pageNum=12;
sum=31;
System.out.println("所有书本共"+sum);
}
public Book(String title, int pageNum) {
super();
this.title = title;
setPageNum(pageNum);
this.pageNum = pageNum;
this.type="计算机";
}
public Book(String title, int pageNum, String type) {
this.title = title;
this.pageNum = pageNum;
this.type = type;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public int getPageNum() {
return pageNum;
}
public void setPageNum(int pageNum) {
if(pageNum<200) {
this.pageNum = pageNum;
}else {
this.pageNum=pageNum;
}
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public String toString() {
return "Book [title=" + title + ", pageNum=" + pageNum + ", type=" + type + "]";
}
public void detail() {
System.out.println(toString());
}
}
测试类
public class BookText {
public static void main(String[] args) {
// Book b1 = new Book();
// b1.setPageNum(123);
// b1.setTitle("红楼梦");
// b1.detail();
Book b1 = new Book("红楼梦",100);
b1.sum=5;
b1.detail();
Book b2 = new Book("细节",123,"都市现代");
b2.sum=12;
b2.detail();
System.out.println("调用书本总数"+b1.sum);
System.out.println("调用书本总数"+b2.sum);
System.out.println("book直接调用"+Book.sum);
/*
* 改为静态变量后,sum的数就为共同的,如果数据改变,就一起变
*/
b1.dayin();
b2.dayin();
Book.dayin();//静态方法可通过类名直接访问
}
}
静态关键字
静态变量:在成员变量前加static关键字,可以将声明为静态成员变量
静态方法:工具类中会使用静态方法
静态块:假设淘宝从开到关闭,只需要链接一次
数据库服务器就够了,什么样的代码在程序起动到关闭之间无论创建多少个对象只调用一次
静态变量
静态变量的特点:
1:如果类中成员变量被定义为静态,那么无论有多少变量,静态成员变量只有一份
内存拷贝,就是说:所有对象共享
该成员变量
2:静态成员变量的作用域只在类内部,但其生命周期却贯穿
整个程序
3:由于静态变量是属于全系统的变量,所以有些情况可以直接赋值
4:由于改为静态变量后,sum的数就为共同的,如果数据改变,就一起变
没使用静态变量前.png
用了静态变量后.png

静态方法

静态方法特点
1:非静态变量不能在静态方法中调用
2:静态方法可直接使用类名访问

静态块
特点:
1: 静态块在程序第一次使用的时候默认被调用
2:无论创建多少对象静态块只能被调用一次
3:静态块只能调用静态变量的值,非静态变量无法被调用


网友评论