类的成员初始化

来源:互联网 发布:网络上很红的长发男模 编辑:程序博客网 时间:2024/05/13 23:28

类的每个基本类型数据成员都有一个初始值;

类中定义一个对象引用时,如果不初始化,此引用会获得一个特殊值:null。

代码如下:

public class InitialValues { 
boolean t; 
char c; 
byte b; 
short s; 
int i; 
long l; 
float f; 
double d; 
InitialValues reference; 
void printlnInitialValues() { 
System.out.println("Data type Initial value"); 
System.out.println("boolean " + t); 
System.out.println("char [" + c + "]"); 
System.out.println("byte " + b); 
System.out.println("short " + s); 
System.out.println("int " + i); 
System.out.println("long " + l); 
System.out.println("float " + f); 
System.out.println("double " + d); 
System.out.println("reference " + reference); 

public static void main(String[] args) { 
InitialValues iv = new InitialValues(); 
iv.printlnInitialValues(); 
/* You could also say: 
new InitialValues().printlnInitialValues(); 
*/ 

} /* Output: 
Data type Initial value 
boolean false 
char [ ] 
byte 0 
short 0 
int 0 
long 0 
float 0.0 
double 0.0 
reference null 
*///:~ 


在类中,初始化顺序取决于变量的顺序。定义在类中。即使变量定义可以分散在整个和在方法定义之间,它们仍旧会在任何方法(包括构造器)被调用之前得到初始化。例如:

class Window { 
Window(int marker) { System.out.println("Window(" + marker + ")"); } 

class House { 
Window w1 = new Window(1); // Before constructor 
House() { 
// Show that we’re in the constructor: 
System.out.println("House()"); 
w3 = new Window(33); // Reinitialize w3 

Window w2 = new Window(2); // After constructor 
void f() { System.out.println("f()"); } 
Window w3 = new Window(3); // At end 

public class OrderOfInitialization { 
public static void main(String[] args) { 
House h = new House(); 
h.f(); // Shows that construction is done 

} /* Output: 
Window(1) 
Window(2) 
Window(3) 
House() 
Window(33) 
f() 
*///:~ 


初始化的顺序是静态的(如果以前没有初始化的话)然后是非静态对象。


原创粉丝点击