Java中构造代码块和成员变量初始化的顺序关系
来源:互联网 发布:北京奥运会姚明数据 编辑:程序博客网 时间:2024/05/18 18:18
作者:小开
链接:https://www.zhihu.com/question/20616186/answer/15646132
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
类变量、实例变量的初始化比较相似,对于实例变量有一个例子
public class RAMTest {
{
price = 3.4;//①--非静态语句块
}
public RAMTest(double price) {
this.price = price;//②--构造函数
}
double price = 2.0;//③--声明语句并赋值
}
本例中对实例变量price的初始化有三处
执行顺序为:③中price变量声明[price=0.0]
--①中price变量赋值[price=3.4]
--③中price变量赋值[price=2.0]
--②中price构造函数赋值
需要注意的是,虽然非静态语句初始块中的price变量的赋值在声明之前,但实际上执行的时候会先执行变量的声明,再按代码顺序执行变量值的赋值动作,然后再进行构造函数对实例的初始化构造。
这三种实例变量的初始化语句经过编译器处理后,都会合并到构造器中去,其中定义变量语句转换得到的赋值语句、初始化块中的语句转化得到的赋值语句,总是位于构造器的所有语句之前。合并后两种赋值语句的顺序保持他们在源码中的顺序。
链接:https://www.zhihu.com/question/20616186/answer/15646132
来源:知乎
著作权归作者所有,转载请联系作者获得授权。
类变量、实例变量的初始化比较相似,对于实例变量有一个例子
public class RAMTest {
{
price = 3.4;//①--非静态语句块
}
public RAMTest(double price) {
this.price = price;//②--构造函数
}
double price = 2.0;//③--声明语句并赋值
}
本例中对实例变量price的初始化有三处
执行顺序为:③中price变量声明[price=0.0]
--①中price变量赋值[price=3.4]
--③中price变量赋值[price=2.0]
--②中price构造函数赋值
需要注意的是,虽然非静态语句初始块中的price变量的赋值在声明之前,但实际上执行的时候会先执行变量的声明,再按代码顺序执行变量值的赋值动作,然后再进行构造函数对实例的初始化构造。
这三种实例变量的初始化语句经过编译器处理后,都会合并到构造器中去,其中定义变量语句转换得到的赋值语句、初始化块中的语句转化得到的赋值语句,总是位于构造器的所有语句之前。合并后两种赋值语句的顺序保持他们在源码中的顺序。
0 0
- Java中构造代码块和成员变量初始化的顺序关系
- Java中构造代码块和成员变量初始化的顺序关系2之 Cannot reference a field before it is defined
- Java 代码块、成员变量初始化、构造函数初始化顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- Java类成员变量、普通成员变量、初始化块、构造方法的初始化和执行顺序
- java中成员变量、代码块、构造函数执行顺序
- Java中静态变量、块、非静态变量、块和构造器的初始化顺序
- java 中类初始化,构造方法,静态成员变量,静态块的加载顺序
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- java中类的静态代码块、构造代码块、构造方法、静态成员的初始化顺序详解
- java IO库应用场景
- git使用
- hdu 5727 Necklace (全排列+二分匹配)
- Kernel Methods(PRML第六章)读书笔记
- Android开发-蓝牙-步骤方法
- Java中构造代码块和成员变量初始化的顺序关系
- Spring框架
- svn "cannot set LC_CTYPE locale"
- BIO NIO AIO实例
- 函数
- Zedboard上运行Linaro系统(一):SD卡分区
- 介绍一个个人觉得比较好用VC日志文件输出工具
- xc Delay代码
- 快速对图像的像素进行操作 opencv 实战