public class TestClass{
private int i=giveMeJ();
private int j=10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
System.out.println((new TestClass()).i);
}
}
为什么输出结果为0?想不明白
private int i=giveMeJ();
private int j=10;
private int giveMeJ(){
return j;
}
public static void main(String args[]){
System.out.println((new TestClass()).i);
}
}
为什么输出结果为0?想不明白
解决方案 »
- java版本冲突问题
- Calendar的字段问题
- JAVA 与 Access直接连接出现问题,怎么办呀?
- JAVA应用程序中怎么样通过一个URL来获取所对应的HTML文件
- 高分求《Applying UML and Patterns -- An introduction to OOA/D and the UP》
- 如何关闭窗口,送分
- 初学JB,那位兄弟给我说一下DATABASE,TABLEDATASET,QUERYDATASET的常用方法和属性,谢谢!
- 实体BEAN的主鍵是自动增加类型的,如何创建?
- ◆ 寻找2月9号一起回家的朋友:T1次,北京--长沙 ◆
- 个伟大虾:帮帮小弟吧
- 多线程 有东西不明白
- 抽象类不能实例化的问题求助
private int i=giveMeJ();
这个时候 private int j=10;
还没执行,j还是0;你把顺序调过来,就对了
private int j=10;
private int i=giveMeJ();
当执行 new TestClass()时,(实际上是要执行默认的构造方法),先是给成员变量分配空间并赋默认值,i=0,j=0.
之后程序会上溯类的父类初始化,这个类的父类是 Object.
从 Object里回来后,先给i j显式赋值,这是调用giveMeJ()方法给i赋值,返回j的值0。再给j赋值10。
之后执行空构造方法,对象产生完。
所以最后输出 new TestClass().i=0.楼主参考一下:
http://wenwen.soso.com/z/q191435823.htm