JAVA实例变量的初始化过程
2013-08-30 17:53
92 查看
假设有这样一段代码:
public class Cat {
private String name;
private int age;
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", weight=" + weight
+ "]";
}
public Cat(String name, int age) {
System.out.println("Cat构造函数开始执行");
this.name = name;
this.age = age;
}
{
System.out.println("非静态代码块开始执行");
weight=2.0;
}
private double weight = 2.8;
}
public class Tets02 {
/**
* @param args
*/
public static void main(String[] args) {
Cat cat= new Cat("波斯猫",2);
System.out.println(cat.toString());
}
}
得出来weight的值是2.8;
执行的过程是:
double weight;
weight=2.0//非静态代码块执行
weight=2.8
此时weight=2.8是发生在构造函数中的。
但是如果是:
public class Cat {
private String name;
private int age;
private double weight = 2.8;
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", weight=" + weight
+ "]";
}
public Cat(String name, int age) {
System.out.println("Cat构造函数开始执行");
this.name = name;
this.age = age;
}
{
System.out.println("非静态代码块开始执行");
weight=2.0;
}
}
得到的结果是weight=2.0
说明初始化代码块与构造函数的地位平等,完全是按照代码先后来执行的
public class Cat {
private String name;
private int age;
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", weight=" + weight
+ "]";
}
public Cat(String name, int age) {
System.out.println("Cat构造函数开始执行");
this.name = name;
this.age = age;
}
{
System.out.println("非静态代码块开始执行");
weight=2.0;
}
private double weight = 2.8;
}
public class Tets02 {
/**
* @param args
*/
public static void main(String[] args) {
Cat cat= new Cat("波斯猫",2);
System.out.println(cat.toString());
}
}
得出来weight的值是2.8;
执行的过程是:
double weight;
weight=2.0//非静态代码块执行
weight=2.8
此时weight=2.8是发生在构造函数中的。
但是如果是:
public class Cat {
private String name;
private int age;
private double weight = 2.8;
public String toString() {
return "Cat [name=" + name + ", age=" + age + ", weight=" + weight
+ "]";
}
public Cat(String name, int age) {
System.out.println("Cat构造函数开始执行");
this.name = name;
this.age = age;
}
{
System.out.println("非静态代码块开始执行");
weight=2.0;
}
}
得到的结果是weight=2.0
说明初始化代码块与构造函数的地位平等,完全是按照代码先后来执行的
相关文章推荐
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
- Java 类的实例变量初始化的过程 静态块、非静态块、构造函数的加载顺序
- java基础:类变量与实例变量的初始化过程
- Java中定义实例变量时指定初始化值顺序
- java 父类访问子类对象的实例变量 继承过程中的执行顺序
- java 创建实例时,里面的实例变量首先初始化???
- Java初始化顺序总结及其程序执行过程图- 静态变量、静态代码块、成员变量、构造函数
- java实例变量初始化
- java类加载及初始化过程(静态变量、静态代码块、代码块、构造函数)
- 深入理解Java对象的创建过程:类的初始化与实例化
- java 类变量和成员变量初始化过程
- Java类加载及变量初始化过程
- static关键字修饰变量的加载和初始化过程(Java)
- java实例变量初始化
- java运行过程,初始化的顺序,构造函数,变量作用域,反射机制,面向对象的特征
- java子类实例初始化过程
- Java中成员变量的初始化过程
- 类变量与实例变量的初始化过程
- java子类实例初始化过程