Java____赋值顺序,调用顺序,内部类衍生问题:赋值和构造器、代码块谁先执行?+4种代码块
2015-10-08 11:51
661 查看
运行顺序为:
1.父类静态块
2.自身静态块
3.父类块
4.父类构造器
5.自身块
6.自身构造器
赋值顺序为:
1.父类的静态变量赋值
2.自身的静态变量赋值
3.父类成员变量赋值
4.父类块赋值
5.父类构造器赋值
6.自身成员变量赋值
7.自身块赋值
8.自身构造器赋值
一、普通代码块
直接在一个方法中出现的{}就称为普通代码块,例子程序如下:
public class CodeDemo01{
public static void main(String[] args){
//普通代码块
{
int x = 10;
System.out.println("x=" + x);
}
int x = 100;
System.out.println("x=" + x);
}
}
二、构造代码块
直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:
public class CodeDemo02{
public CodeDemo02(){
System.out.println("========这是构造方法=========");
}
//这是构造代码块,而且在new对象时,构造代码块优先构造方法执行
{
System.out.println("=========这是构造块!=========");
}
public static void main(String[] args){
new CodeDemo02();
new CodeDemo02();
}
}
三、静态代码块
使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,例子程序如下:
public class CodeDemo03
{
static{
System.out.println("这是主类中的静态代码块!");
}
public static void main(String[] args){
new Demo();
new Demo();
new Demo();
}
}
class Demo
{
static{
System.out.println("这是Demo类中的静态代码块!");
}
{
System.out.println("这是Demo类中的构造块!");
}
public Demo(){
System.out.println("这是构造方法!");
}
}
静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!
四、同步代码块
同步代码块主要出现在多线程中。
由此可以得出,内部类中出现的
先执行private xx = new a();
再执行构造器的情况,不是因为把private xx = new a();当做代码块,而是先赋值!
1.父类静态块
2.自身静态块
3.父类块
4.父类构造器
5.自身块
6.自身构造器
赋值顺序为:
1.父类的静态变量赋值
2.自身的静态变量赋值
3.父类成员变量赋值
4.父类块赋值
5.父类构造器赋值
6.自身成员变量赋值
7.自身块赋值
8.自身构造器赋值
一、普通代码块
直接在一个方法中出现的{}就称为普通代码块,例子程序如下:
public class CodeDemo01{
public static void main(String[] args){
//普通代码块
{
int x = 10;
System.out.println("x=" + x);
}
int x = 100;
System.out.println("x=" + x);
}
}
二、构造代码块
直接在类中定义的没有加static关键字的代码块{}称为构造代码块,例子程序如下:
public class CodeDemo02{
public CodeDemo02(){
System.out.println("========这是构造方法=========");
}
//这是构造代码块,而且在new对象时,构造代码块优先构造方法执行
{
System.out.println("=========这是构造块!=========");
}
public static void main(String[] args){
new CodeDemo02();
new CodeDemo02();
}
}
三、静态代码块
使用static关键字声明的代码块称为静态代码块,静态块的主要目的是用来为静态属性初始化,例子程序如下:
public class CodeDemo03
{
static{
System.out.println("这是主类中的静态代码块!");
}
public static void main(String[] args){
new Demo();
new Demo();
new Demo();
}
}
class Demo
{
static{
System.out.println("这是Demo类中的静态代码块!");
}
{
System.out.println("这是Demo类中的构造块!");
}
public Demo(){
System.out.println("这是构造方法!");
}
}
静态块优先于主方法的执行,静态块优先于构造方法的执行,而且只执行一次!
四、同步代码块
同步代码块主要出现在多线程中。
由此可以得出,内部类中出现的
先执行private xx = new a();
再执行构造器的情况,不是因为把private xx = new a();当做代码块,而是先赋值!
相关文章推荐
- 开发项目准备举例
- 学生选课系统-管理员功能模块设计(Java+NetBeans+SQLServer2008)
- Eclipse创建WEB工程Maven+Spring+SpringMVC+MyBatis示例
- MyEclipse的激活、破解
- Java获取字符串编码方式
- Java快捷键与搜狗输入法快键的冲突
- Java如何保留两位小数
- Java性能小技巧
- HDOJ 1850 Being a Good Boy in Spring Festival(尼姆博奕,位运算小技巧)
- 高吞吐低延迟Java应用的垃圾回收优化
- adt-bundle svn插件安装
- SpringMvc-参数为数组
- SpringMvc-路径为变量,获取这个变量
- Java集合类
- eclipse添加jar反编译插件
- java学习之路,方法重写
- Mac下添加java环境变量
- 从github上引入包到eclipse
- java实现socket客户端连接服务端
- IntelliJ IDEA PK Eclipse,孰胜孰负?