一个小程序题,不明白输出结果

arthur.dy.lee 2010-03-27 09:34:05
public class A{
private int i=giveMeJ();
private int j =10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
//1.
System.out.println((new A()).i);
}
}

告诉我输出什么,最重要的是为什么?


...全文
106 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
liuwenxian 2010-03-27
  • 打赏
  • 举报
回复
结果:0
变量的初始化是按顺序执行的 在初始化变量i的时候 j还没有被初始化呢 所以值为默认0
如果把private int j =10;这句放到最前面 结果就是10了

正解。
流星谜 2010-03-27
  • 打赏
  • 举报
回复
楼主的输出就是0;

但是如果你这样的话输出就是10
public class A{
private int j =10;
private int i=giveMeJ();//引用成员方法
private int giveMeJ(){
return j; //返回j 的值
}
public static void main(String args[]){
//1.
System.out.println((new A()).i); //输出变量i
}
}


个人认为变量赋值的先后问题,i在j前面的话,在调用静态的方法时j还未赋值,这时应该是默认的0.
Adebayor 2010-03-27
  • 打赏
  • 举报
回复
结果:0
变量的初始化是按顺序执行的 在初始化变量i的时候 j还没有被初始化呢 所以值为默认0
如果把private int j =10;这句放到最前面 结果就是10了
gjanyanlig 2010-03-27
  • 打赏
  • 举报
回复
输出是0
24K純帥 2010-03-27
  • 打赏
  • 举报
回复
是0,要是j是static的话就是10
不善^ 2010-03-27
  • 打赏
  • 举报
回复
楼主是想知道为什么等于0 而不等于10吧

你把 i 和j 定义 位置换下就知道了
public class A{
private int j =10;
private int i=giveMeJ();//引用成员方法
private int giveMeJ(){
return j; //返回j 的值
}
public static void main(String args[]){
//1.
System.out.println((new A()).i); //输出变量i
}
}
yangyaxiang 2010-03-27
  • 打赏
  • 举报
回复
己安程序的流程走一边就知道了。
先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
zhujinbo 2010-03-27
  • 打赏
  • 举报
回复
0.
你自己安程序的流程走一边就知道了。
先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
ydwcn 2010-03-27
  • 打赏
  • 举报
回复
你这个问题的答案是 0
这个段代码运行这程是这样子的:

1,当new对像A时,先对 i j 进行初始化。 i 因为调用来函数,所以默认初始为 0 。 j 为 10
2, 你的对像调用的是 i ,他在执行时不会通过 private int i=giveMeJ(); 所以得到的结果为 0;

package com.ydw.struts;

public class A {

private int i = giveMeJ();
private int j = 100;

private int giveMeJ()
{
return j;
}
public static void main(String[] args) {
System.out.println((new A()).i);
System.out.println((new A()).j);
System.out.println((new A()).giveMeJ());
}
}

结果是: 0
100
100
JAVA中,一般不直接调用变量(属性),所以通常用 getter and setter方法去得到它们。。

猫儿爷爷 2010-03-27
  • 打赏
  • 举报
回复
public class A{
private int i=giveMeJ();//引用成员方法
private int j =10;
private int giveMeJ(){
return j; //返回j 的值
}
public static void main(String args[]){
//1.
System.out.println((new A()).i); //输出变量i
}
}

62,624

社区成员

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

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