无法静态上下文中引用非静态方法

class StaticDemo{
static int x;
int y;

public static int getX(){
return x;
}
public static void setX(int newX){
x=newX;
}

public int getY(){
return y;
}
public void setY(int newY){
y=newY;
}

}

public class KY3_4{
public static void main(String[] args){
System.out.println("静态变量x="+StaticDemo.getX());
System.out.println("实例变量y="+StaticDemo.getY());
StaticDemo a=new StaticDemo();
StaticDemo b=new StaticDemo();
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="+b.getX());
System.out.println("实例变量b.y="+b.getY());
}
}
应该怎么改呀 结果是什么

应该改作如下:
class StaticDemo{
static int x;
int y;

public static int getX(){
return x;
}
public static void setX(int newX){
x=newX;
}
public int getY(){
return y;
}
public void setY(int newY){
y=newY;
}
}
public class KY_34{
public static void main(String[] args){
System.out.println("静态变量x="+StaticDemo.getX());
System.out.println("实例变量y不能引用");
/*实例变量在创建对象之前是不能被引用的*/
StaticDemo a=new StaticDemo();
StaticDemo b=new StaticDemo();
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="+b.getX());
System.out.println("实例变量b.y="+b.getY());
}
}

结果应该为如下:
静态变量x=0 //int型默认值为0 String型为 null boolean型为FALSE
实例变量y不能引用 //解释见程序注解
静态变量a.x=3 //静态是大家都可以引用和修改的 所以是最后的值
实例变量a.y=2 // 实例变量是属于对象的
静态变量b.x=3 //同上静态变量a.x=3 注解
实例变量b.y=4 //同上注解
温馨提示:答案为网友推荐,仅供参考
第1个回答  2009-03-21
System.out.println("实例变量y="+StaticDemo.getY());
getY()这个方法不是static的,只能通过对象来引用
如:b.getY()
不能用StaticDemo.getY()引用

public int getY(){
return y;
}
public void setY(int newY){
y=newY;
}
把这两个方法加个 static

public static int getY
public static void setY

再把 int y; 改成 static int y;

这题不是要看答案, 是要你明白static的用法
第2个回答  2009-03-21
public int getY(){
return y;
}
public void setY(int newY){
y=newY;
}
把这两个方法加个 static

public static int getY
public static void setY
第3个回答  2009-03-21
通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员,它能够被它自己使用,而不必引用特定的实例。在成员的声明前面加上关键字static(静态的)就能创建这样的成员。如果一个成员被声明为static,它就能够在它的类的任何对象创建之前被访问,而不必引用任何对象。你可以将方法和变量都声明为static。static 成员的最常见的例子是main( ) 。因为在程序开始执行时必须调用main() ,所以它被声明为static。
相似回答