Java编程中对象调用静态变量和成员变量有什么区别,该怎么处理

如题所述

对于java来说,调用static变量和成员变量的写法是一样的,只是调用static还可以直接用类名来调用(在C#里甚至不允许这么写,就是为了让程序员明确static是属于类的,而不是实例的)。
但是,虽然可以这么用,但不推荐这么用,调用static变量应该明确写上类名,是为了提醒自己,这个属性是属于类而不是实例的,它由所有实例共有。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-06-08
调用成员变量的代码:
public class TestMain {
int i=50;
public void call(){

System.out.println("调用Call方法 ");
for(i=0;i<3;i++){
System.out.print(i+" ");
if(i==2){
System.out.println("");
}
}
}
public TestMain(){

}

public static void main(String[] args) { // 定义主方法
TestMain t1=new TestMain();
TestMain t2=new TestMain();
t2.i=60;
System.out.println("第一个实例对象调用变量i的结果:"+t1.i++);
t1.call();
System.out.println("第二个实例对象调用变量i的结果::"+t2.i);
t2.call();
}
}

输出结果:
第一个实例对象调用变量i的结果:50
调用Call方法
0 1 2
第二个实例对象调用变量i的结果::60
调用Call方法
0 1 2

但是把局部变量i定义为静态时(static int i=50)输出结果为:
第一个实例对象调用变量i的结果:60
调用Call方法
0 1 2
第二个实例对象调用变量i的结果::3
调用Call方法
0 1 2
为什么第二个实例对象调用变量i的结果为3
-----解决方案--------------------
因为在for循环执行完后,i的值变成3了,所以第二个对象调用变量i,输出的结果为3.
相似回答