Java编程中对象调用静态变量和成员变量有什么区别,该怎么处理
2个回答
展开全部
调用成员变量的代码:
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.
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.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询