已有101人关注
咨询问题
发表在Java图书答疑 2013-02-06
是否精华
版块置顶:
[font size=4]《java从入门到精通》3版,第138页、139页。例7.12,例7.13。

package 第七章;

public class 访问对象 {  
static int i=47;     
public void a(){            
System.out.println("调用a()方法");
for (i=0;i<9;i++){
System.out.print(i+" "); 
if (i==5){          
System.out.println("\n");  
}
}
}
public 访问对象(){            
}

public static void main(String[] args) {  
访问对象 x=new 访问对象();   
访问对象 y=new 访问对象();   
y.i=60;                

System.out.println("第一个实例对象调用变量i的结果是:"+x.i++); 
                x.a(); 
                
System.out.println("\n"); 

System.out.println("第二个实例对象调用变量i的结果是:"+y.i)
y.a();            
}
}

问题1:成员变量被定义为静态之后(static int i=47; ),y.i的输出结果为什么是9,而不是60,(如将i< x,这个 x 改成什么数字,输出结果就是这个数字),请问,这个 y.i 的结果是如何产生的,逻辑是什么?

问题2:System.out.println(x.i)与 System.out.println(x.i++)的输出结果一致,为什么要使用后者。

谢谢。
[/font]
分享到:
精彩评论 1
无语_mrkj
学分:3155 LV11
2013-02-20
沙发
问题1回复:这是由于当一个成员变量被声明为静态成员变量后,该变量将被所以实例所共享,所以虽然使用y.i=60;使用i的值变为60,但是在执行x.a(); 后,i的值就变为9了。

问题2回复:当使用x.i++输出i的值后,i的值将自动加1,而如果使用x.i输出i的值后,i的值不变。
首页上一页 1 下一页尾页 1 条记录 1/1页
手机同步功能介绍
友情提示:以下图书配套资源能够实现手机同步功能
明日微信公众号
明日之星 明日之星编程特训营
客服热线(每日9:00-17:00)
400 675 1066
mingrisoft@mingrisoft.com
吉林省明日科技有限公司Copyright ©2007-2022,mingrisoft.com, All Rights Reserved长春市北湖科技开发区盛北大街3333号长春北湖科技园项目一期A10号楼四、五层
吉ICP备10002740号-2吉公网安备22010202000132经营性网站备案信息 营业执照