java成员的初始化 --thinking in java学习笔记(三)
来源:互联网 发布:伤感的网络歌曲有哪些 编辑:程序博客网 时间:2024/05/21 19:41
1、对于方法的局部变量,未初始化编译器会报错。而对于类的数据成员(基本数据类型)与对象都会默认的自动获得初始值。
2、构造器初始化。但是仍然阻止不了自动初始化的进行,他将在构造器被调用之前发生。
初始化顺序:在类的内部,变量(包括对象)定义的顺序决定了他们初始化的顺序。他们会在任何方法被调用之前得到初始化。
静态数据的初始化:先静态对象,而后才是非静态对象。书中的例子:
package com.dai.learn;public class TestStatic {public static void main(String[] args) {System.out.println("Creating new Cupboard() in main");new Cupboard();System.out.println("Creating new Cupboard() in main");new Cupboard();table.f2(1);cupboard.f3(1);}static Table table = new Table();static Cupboard cupboard = new Cupboard();}class Bowl{public Bowl(int marker) {System.out.println("Bowl("+ marker+")" );}void f1(int marker){System.out.println("f1("+marker+")");}}class Table{static Bowl bowl1 = new Bowl(1);public Table() {System.out.println("Table()");bowl2.f1(1);}void f2(int marker){System.out.println("f2("+marker+")");}static Bowl bowl2 = new Bowl(2);}class Cupboard{Bowl bowl3 = new Bowl(3);static Bowl bowl4 = new Bowl(4);public Cupboard() {System.out.println("Cupboard()");bowl4.f1(2);}void f3(int marker){System.out.println("f3("+marker+")");}static Bowl bowl5= new Bowl(5);}运行结果:
Bowl(1)Bowl(2)Table()f1(1)Bowl(4)Bowl(5)Bowl(3)Cupboard()f1(2)Creating new Cupboard() in mainBowl(3)Cupboard()f1(2)Creating new Cupboard() in mainBowl(3)Cupboard()f1(2)f2(1)f3(1)每当Cupboard类与Table类被加载时,Bowl类随着他在前二者类中的静态对象加载的同时被加载进来。
注意:静态对象在被初始化后,就不会再次被初始化。
显式的静态初始化:静态块中的内容仅执行一次
非静态实例的初始化:参见上面的初始化顺序。
3、数组初始化:编译器不允许指定数组的大小。
int[] a = {1,2,3,4,5};int[] b = a;int[] c= new int[表达式];
0 0
- java成员的初始化 --thinking in java学习笔记(三)
- (Thinking in Java学习笔记)初始化
- 【thinking in java】学习笔记 三 初始化及权限控制
- Thinking In Java 学习笔记(三)
- Thinking in java 学习笔记(三)
- 《Thinking in Java》狗血的学习笔记-3初始化
- Thinking in Java学习笔记(三)(zt)
- 我的Thinking in Java学习笔记(三)
- 我的Thinking in Java学习笔记(三)
- thinking in java 学习笔记(三)之重载
- Thinking in Java 笔记(三)
- Thinking In Java 学习笔记 - 初始化与清理
- Thinking in Java学习笔记 第五章:初始化与清理
- Thinking In Java笔记(第五章 初始化与清理(三))
- Thinking in Java笔记之初始化清理
- 读thinking in java笔记(四):初始化
- Thinking In Java 学习笔记(序)
- thinking in java 学习笔记(1)
- Android实战简易教程-第四十六枪(自定义控件体验之罗盘)
- Win7 Chrome的缓存及用户数据位置修改
- const总结
- 信息熵
- IOS [[Tool Instance] getUser]引发的血案
- java成员的初始化 --thinking in java学习笔记(三)
- HDU 3268 Columbus’s bargain
- App启动闪屏黑屏问题
- 黑马程序员-C-switch语句
- 输出单层结点
- java多线程之三
- UML总结(对九种图的认识和如何使用Rational Rose 画图)
- Android笔记 4
- QT与Visual Studio 2010整合的例子