一个有趣的问题
//静态变量
//静态变量与实例变量的区别
class StaticDemo {
static int x;//静态变量x
int y;//实例变量y
static public int getX(){
return x;
}
static public void setX(int newX){
x=newX;
}
public int getY(){
return y;
}
public void setY(int newY){ //没有分配空间
y=newY;
}
}
public class ShowDemo{
public static void main(String[] args){
System.out.println("静态变量x="+StaticDemo.getX());
/* 非法,运行出错,why,两种变量类型不一样,
y是实例变量,无法通过类来输出,y在内存不存在,他们开辟在不同空间
*/
StaticDemo a =new StaticDemo();
StaticDemo b =new StaticDemo();
StaticDemo demo =new StaticDemo();//开辟两块内存空间
System.out.println("实例变量 y="+demo.getY());//变量初始化
a.setX(1);//赋值
a.setY(2);
b.setX(3);
b.setY(4);
System.out.println("静态变量 a.x="+a.getX());
System.out.println("实例变量 a.y="+a.getY());
System.out.println("静态变量 b.x="+a.getX());
System.out.println("实例变量 b.y="+a.getY());
}
}
x是静态变量,是一个类,而y是实例变量,不能通过类来输出,既然是实例变量,就应该创建类的实例对象。只有静态的方法才能通过类访问,静态方法只能访问静态变量。