java中的static关键字和静态成员
2010-11-05 13:43
417 查看
在java中声明类的成员变量和成员方法时,可以使用static关键字把成员声明为静态成员。静态变量也叫类变量,非静态变量叫实例变量,静态方法也叫类方法,非静态方法叫实例方法。
类变量属于整个 类,一个类可以创建多个对象,但类的每个静态变量在内存中只有一份拷贝为该类的所有对象共享。类变量(类方法)不用创建对象就可以直接通过类名访问。
下面举例说明类变量与实例变量的区别:
class UseBook{
String name;
float price;
int count=0; //实例变量,记录创建对象的个数
static int bookNumber=100;//静态变量,书的起始编号为100
UseBook(String n,float p){
name = n;
price = p;
count++;
bookNumber++;
}
void output(){
prt("name: " + name + "/t" + "price: " + price + "/t");
prt("bookNumber: " + bookNumber + "/t" + "count: " + count + "/t") ;
}
public static void prt(String s){
System.out.print(s);
}
public static void main(String[] args){
UseBook b1,b2,b3;
b1=new UseBook("java2",36.0f);
b1.output();
b2=new UseBook("c++",40.0f);
b2.output();
b3=new UseBook("vb",20.0f);
b3.output();
}
}
结果如下所示:
name: java2 price: 36.0 bookNumber: 101 count: 1
name: c++ price: 40.0 bookNumber: 102 count: 1
name: vb price: 20.0 bookNumber: 103 count: 1
程序运行说明:
本来定义count是为了记录创建对象的数目,但运行结果却不是期望的结果。这是因为每个对象都拥有一个实例变量count,创建对象时,对count加一的操作是对每个对象的count成员而不是对一个唯一的count操作,所以无法记录创建对象的个数。
而bookNumber是静态变量,被所有对象共享,所有对象操作的是同一个bookNumber成员变量,每创建一个对象bookNumber值增加1,实现了书的自动编号。
类变量属于整个 类,一个类可以创建多个对象,但类的每个静态变量在内存中只有一份拷贝为该类的所有对象共享。类变量(类方法)不用创建对象就可以直接通过类名访问。
下面举例说明类变量与实例变量的区别:
class UseBook{
String name;
float price;
int count=0; //实例变量,记录创建对象的个数
static int bookNumber=100;//静态变量,书的起始编号为100
UseBook(String n,float p){
name = n;
price = p;
count++;
bookNumber++;
}
void output(){
prt("name: " + name + "/t" + "price: " + price + "/t");
prt("bookNumber: " + bookNumber + "/t" + "count: " + count + "/t") ;
}
public static void prt(String s){
System.out.print(s);
}
public static void main(String[] args){
UseBook b1,b2,b3;
b1=new UseBook("java2",36.0f);
b1.output();
b2=new UseBook("c++",40.0f);
b2.output();
b3=new UseBook("vb",20.0f);
b3.output();
}
}
结果如下所示:
name: java2 price: 36.0 bookNumber: 101 count: 1
name: c++ price: 40.0 bookNumber: 102 count: 1
name: vb price: 20.0 bookNumber: 103 count: 1
程序运行说明:
本来定义count是为了记录创建对象的数目,但运行结果却不是期望的结果。这是因为每个对象都拥有一个实例变量count,创建对象时,对count加一的操作是对每个对象的count成员而不是对一个唯一的count操作,所以无法记录创建对象的个数。
而bookNumber是静态变量,被所有对象共享,所有对象操作的是同一个bookNumber成员变量,每创建一个对象bookNumber值增加1,实现了书的自动编号。
相关文章推荐
- Java如何在静态方法中访问类的实例成员(没附加static关键字的字段或方法)
- java中的static关键字和静态成员
- 黑马程序员--03.Java面向对象--02.【static关键字】【main方法】【静态成员】
- JAVA基础第六天学习日记_static关键字、文档、静态代码块、单例开发模式
- java--面向对象(static关键字、main、静态什么时候使用、静态代码块、对象的初始化过程)
- 小东吖 之 java 构造方法 static关键字 静态变量 静态方法
- java中static静态成员
- java进阶1——static静态关键字
- [转]Java static关键字与静态块
- java基础之----静态代码块和静态方法、以及static 关键字
- java学习中static关键字,即静态的运用,及如何为代码写说明
- 面向对象(二)——操作符重载 & 关键字this & 静态成员static
- Java中static静态关键字的使用
- java中成员变量 、局部变量和局部变量的异同及static关键字
- Java笔记2 面向对象<2>static关键字、main函数、静态运用、单例设计模式
- 深入java static关键字 浅析java类加载机制(解答java静态方法或变量无法访问非静态数据)
- PHP 类的静态成员属性与静态方法 static 关键字
- static 关键字 成员变量和静态变量的区别 静态使用的注意事项 静态代码块 构造代码块
- 为什么静态成员、静态方法(static)中不能用this和super关键字
- java基础案例:static(静态)关键字