帮个忙!谢谢~

MSDN2003 2004-11-07 06:22:16
class Variable
{
int x=0,y=0,z=0;
void init(int x,int y)
{
this.x=x;
this.y=y;
int z=5;
System.out.println("x="+x+" y="+y+" z="+z);
//x=20 y=30 z=5 ,局部变量int z 他的作用域只在该方法的内部。在这里Z=5
}
}
public class VariableTest
{
public static void main(String args[])
{
Variable v=new Variable();
System.out.println("x="+v.x+" y="+v.y+" z="+v.z);
//x=0 y=0 z=0 创建对象 初始化变量 所以都为0。
v.init(20,30);
System.out.println("x="+v.x+" y="+v.y+" z="+v.z);
//x=20 y=30 z=0 调用函数init(),由于z有一个类变量和一个局部变量,这是在类外调用,所以z=0.
}
}
输出结果:
x=0 y=0 z=0
x=20 y=30 z=5
x=20 y=30 z=0
Press any key to continue...

这个例子主要讲 局部变量Z和域变量Z的作用域不同,请问从哪里能够体现出来。为什么第二次输出Z=5 第三次输出Z=0 ?
...全文
80 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
廖秀锋 2004-11-07
  • 打赏
  • 举报
回复
v.init(20,30);
这句就会执行System.out.println("x="+x+" y="+y+" z="+z);
所以第二行是上面这个语句输出的
廖秀锋 2004-11-07
  • 打赏
  • 举报
回复
第三行是这个输出的
System.out.println("x="+v.x+" y="+v.y+" z="+v.z);
MSDN2003 2004-11-07
  • 打赏
  • 举报
回复
这三行的输出结果都是由哪个System.out.println打印出来的?
请告诉我 ,让我看一下执行顺序!
jackkui 2004-11-07
  • 打赏
  • 举报
回复
原因是你的
void init(int x,int y)
{
this.x=x;
this.y=y;
int z=5;
System.out.println("x="+x+" y="+y+" z="+z);
//x=20 y=30 z=5 ,局部变量int z 他的作用域只在该方法的内部。在这里Z=5
}
中使用的是int z,这并没有改变该类中的z变量所以,在第三次输出时,还是0
如果你把上面的int z = 5;改称是this.z = 5;那么第三次输出的就是5了

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧