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);
}
}告诉我输出什么,最重要的是为什么?
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);
}
}告诉我输出什么,最重要的是为什么?
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
}
}
这个段代码运行这程是这样子的: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方法去得到它们。。
你自己安程序的流程走一边就知道了。
先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
先执行 i=giveMeJ() ;那程序就到giveMeJ()方法中去了。该方法是return j。可这时候 int j =10,还没执行到呢。所及j作为int类型的变量默认初始化为0,所以就返回0了。
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还没有被初始化呢 所以值为默认0
如果把private int j =10;这句放到最前面 结果就是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.
变量的初始化是按顺序执行的 在初始化变量i的时候 j还没有被初始化呢 所以值为默认0
如果把private int j =10;这句放到最前面 结果就是10了正解。