博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java 编译时的初始化顺序
阅读量:5965 次
发布时间:2019-06-19

本文共 976 字,大约阅读时间需要 3 分钟。

有的时候,java的初始化会对我的工作照成很大影响,所以简单介绍一下,

首先介绍简单的变量的初始化:在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它也会先于构造器和方法初始化。

public class Test{

    public static void main(String[] args){
        Test2 test2 = new Test2();
        test2.f();
    }
}
class Test1{
    public Test1(int i){
        System.out.println("this is Test1"+i);
    }
}
class Test2{

    Test1 test1;

    Test1 test11 = new Test1(1);
    public Test2(){
        System.out.println("this is Test2");
        System.out.println("here is test1 "+test1);
        test1 = new Test1(1111);
        test13 = new Test1(33);
    }
    Test1 test12 = new Test1(2);
    public void f(){
        System.out.println("this is f()");
    }
    Test1 test13 = new Test1(3);
}

输出结果为:

this is Test11

this is Test12
this is Test13
this is Test2
here is test1 null
this is Test11111
this is Test133
this is f()

由此可以看出初始化的顺序为:在类的内部,变量定义的先后顺序决定了初始化的顺序,即使变量定义散布于方法定义之间,它也会先于构造器和方法初始化。

即使在构造器或者定义的时候对变量进行了初始化但是这也没办法阻止系统对它进行的默认的初始化;

如果有静态的变量,那么static的变量会优先进行初始化,然后再对普通变量初始化,static变量只初始化一次,当第一次用到这个类的时候进行初始化

转载于:https://www.cnblogs.com/monkeydai/p/4171627.html

你可能感兴趣的文章
浅析支付系统的整体架构
查看>>
二位数组
查看>>
unix文件权限
查看>>
Python 模拟鼠键
查看>>
2017-2018-2 20155224『网络对抗技术』Exp7:网络欺诈防范
查看>>
tomcat 搭建
查看>>
Source Code Review
查看>>
分享一下我安装启动Jmeter出错时的解决办法
查看>>
java 调用process
查看>>
用a标签实现submit提交按钮的效果
查看>>
毕向东_Java基础视频教程第20天_IO流(1~4)
查看>>
几图理解BeautifulSoup
查看>>
HashMap内部是如何实现的(转)
查看>>
交互设计[3]--点石成金
查看>>
java实现双向循环链表
查看>>
如何使用缓存提高程序性能
查看>>
【trie树】HDU4825 Xor Sum
查看>>
SCCM TP4部署Office2013
查看>>
Linux系统启动过程,grub重装。
查看>>
使用Putty密钥认证机制远程登录Linux
查看>>