您的位置:首页 > 其它

程序启动的顺序以及实例变量相互赋值、传递拷贝的理解

2016-01-01 16:20 435 查看

 

public class InstanceInitializer {
private int i = 1;
private int getI() {
return i;
}
private int j = getI();

public InstanceInitializer()
{
i = 2;
}
public static void main(String[] args) {
InstanceInitializer ii = new InstanceInitializer();
System.out.println(ii.j);
System.out.println(ii.i);
}
}

以上程序运行结果:

 

public class InstanceInitializer {
private int i = 1;
private int j = getI();
private int getI() {
return i;
}

public InstanceInitializer()
{
i = 2;
}
public static void main(String[] args) {
InstanceInitializer ii = new InstanceInitializer();
System.out.println(ii.j);
System.out.println(ii.i);
}
}

以上程序运行结果:

 

public class InstanceInitializer {
public InstanceInitializer()
{
i = 2;
}
private int i = 1;
private int j = getI();
private int getI() {
return i;
}

public static void main(String[] args) {
InstanceInitializer ii = new InstanceInitializer();
System.out.println(ii.j);
System.out.println(ii.i);
}
}

以上程序运行结果:

 

public class InstanceInitializer {
private int j = getI();
private int i = 1;
public InstanceInitializer()
{
i = 2;
}
private int getI() {
return i;
}
11
public static void main(String[] args) {
InstanceInitializer ii = new InstanceInitializer();
System.out.println(ii.j);
System.out.println(ii.i);
}
}

以上程序运行结果:

 以上程序,因为在定义实例变量j 后,对其初始化的时候,所调运的函数需要另一个实例变量i 的拷贝,可是此时该实例变量并未定义以及初始化,所以此时调运该函数失败。

 

以上对比结果说明:1.实例变量的定义、2.初始化、3. 为实例变量的初始化而调用的函数定义中含有某已经被成功定义、初始化的的实例变量 4.构造函数的定义是

                         程序编辑与运行的基本顺序。

 

                       也就是说明:程序是按照你书写程序中的实例变量的顺序逐个进行初始化的。(类变量是优先定义与初始化的)

                        实例变量的相互赋值传递的是拷贝、不是引用。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐