Java初始化

来源:互联网 发布:华中科技大学网络计算 编辑:程序博客网 时间:2024/06/05 06:20
  1. 非静态变量初始化:
    (1)类的基础数据类型变量不对其初始化,运行时不会报错,因为编译器会为此变量赋一个初始值;而对象的引用变量如果不初始化,此引用为null,运行时会报“NullPointerException”。
    (2)方法的中的变量(即局部变量)不管是基础数据类型还是对象的引用,如果不初始化,编译时就会报错。
  2. 静态初始化:
    类首次加载到内存时会完成类的静态变量的初始化。
  3. 构造器初始化:
    构造初始化之前会先初始化类的非静态变量,然后在对象被操作之前构造完成初始化。

初始化顺序:
静态变量(包括静态块)> 非静态变量(包括非静态块) > 构造器

下面做个简单的测试:
这里写图片描述

打印如下:
I am father’s static!
I am son’s static!
I am father!
This is father’s constructor!
I am son!
This is son’s constructor!

分析:
1、在main中new了一个Son的对象,这时候就需要加载Son类,而Son继承于Father,故而先加载Father类到内存中。
2、静态变量是在类的第一次加载时初始化,所以首先打印“I am father’s static!”。
3、Father类加载完后,继续加载Son类,同理,打印“I am son’s static!”。
4、Father类和Son类加载完后,接下来进行的是实例化。
5、由于Son类继承于Father类,子类的对象要想获得父类的属性,必须先要实例化父类。
6、调用Father类的构造之前,先初始化Father类的变量和非静态代码块,打印出“I am father!”,然后调用构造打印出“This is father’s constructor!”。
7、实例化Son类,同6,先后打印出“I am son!”和“This is son’s constructor!”。

阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 家常土豆饼 中国邮政 钉钉电脑版下载 网线水晶头接法图解 鞋带的系法图解 帅哥图片 非主流图片 素描图片 天安门图片 特殊符号 108种姿势全图 识图 腐国度 国产高清在线 国产精品 围棋规则 网上共青团智慧团建 男人团 请回答1998 不求回报 小丑回魂2 回到明朝当王爷 四川学生资助网 四字成语 嚣张 嘴唇上长泡怎么办 小嘀咕影视 男男 嗯儿子再插深点 邪王嗜宠鬼医狂妃 瑜伽 喵咪 福利社 我真要逆天啦 商标设计图案 唯美图集 76人吉祥物唐装 孟姜女哭长城 郑州 长沙