一段代码,请高手讲解

naomi667 2005-12-01 03:00:37
import java.io.*;
  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("** in init**");
  System.out.println("x="+x+" y="+y+" z="+z);
    }
  }
  public class VariableTest{
  public static void main(String args[]){
  Variable v=new Variable();
  System.out.println("**before init**");
  System.out.println("x="+v.x+" y="+ v.y+" z="+v.z);
  v.init(20,30);
  System.out.println("**after init**");
  System.out.println("x="+v.x+ " y="+ v.y+" z="+v.z);
    }
  }
...全文
91 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
naomi667 2005-12-01
  • 打赏
  • 举报
回复
谢谢,也就是JAVA程序在执行的时候,是从这里开始执行的:public class VariableTest{......
对吗?


为感谢大家,我想给分,怎么说我总分不符呢
Jacky1206 2005-12-01
  • 打赏
  • 举报
回复
Variable v = new Variable(); 初始化一个新的对象,x=0 y=0 z=0 不执行 init 方法
**before init**

x=0 y=0 z=0

v.init(20,30); 调用 init 方法,由于在 init 方法中定义了 z, 该局部变量在 init 方法内覆盖类变量 z,System.out.println("x="+x+" y="+y+" z="+z);是在 init 内部,所以打印的 z 是 init 内部定义的 z

** in init**

x=20 y=30 z=5

最后一个 print 打印的 z 是类变量 z, 不是局部变量,所以
x=20 y=30 z=0
zhourongbiao 2005-12-01
  • 打赏
  • 举报
回复
很简单呀
先输出:
**before init**
x=0 y=0 z=0
然后进入init函数,输出:
** in init**
x=20 y=30 z=5
**after init**
但是注意其中的z为局部变量并不是类变量z(小范围的变量将隐藏大范围的),因此只是局部变量z被赋值为5,v.x仍然为0,所以接下来输出
x=20 y=30 z=0

naomi667 2005-12-01
  • 打赏
  • 举报
回复
结果我已在JBUILDER中运行得到了,可我不知道为什么结果是:

**before init**

x=0 y=0 z=0

** in init**

x=20 y=30 z=5

**after init**

x=20 y=30 z=0
能讲一下如何运行的吗?多谢
Jacky1206 2005-12-01
  • 打赏
  • 举报
回复
楼主想知道什么?打印结果?

62,629

社区成员

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

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