您的位置:首页 > 编程语言 > Java开发

Java的初始化

2015-06-13 14:16 274 查看
对象的初始化和清理是非常重要也是非常麻烦的事情,本文主要整理一些Java中与初始化相关的规则。

1 自动初始化:类中的成员变量即使没有被赋值,编译器也会给它们一个默认值进行初始化。

DataType   InitialValue
boolean    false
char       []
byte       0
short      0
int        0
long       0
float      0.0
double     0.0
reference  null


前面是Java中基本数据类型的默认值,最后一行是当成员变量是对象引用时的默认值。

然而,对于方法中的局部变量,编译器并不会为它赋予默认值。因此要求使用前必须赋值。

int i;
System.out.println(i); //Error,not initialize


2 指定初始化:定义类成员变量时赋值。

private char c='a';  //OK
private int i=f();   //OK
public int f(){retuan 10;}


这种初始化简单直观,带来的效果是同一个类的所有对象的初始值都是一样的。

3 用构造器完成初始化:使用构造器进行初始化能带来更大的灵活性,使得初始值可以在动态运行中获得。构造器总能确保初始化。创建对象的时候势必会调用构造器,因此我们在使用对象前一定完成了所有初始化工作。但第一点提到的自动初始化仍然奏效。

private int i;
public A(){i=10;}  //i会被先赋值为0,再被赋值为10


成员变量定义的顺序决定了初始化的顺序,但所有成员变量都会在构造器之前完成初始化。

private int i;  //第一个被初始化
public A(){
k=9;       //最后
}
private int j=2;  //第二个
private int k=3;  //第三个


成员变量有静态的时候,初始化顺序如下:

private int i;         //第三个
private static int j;  //第一个被初始化
public A(){ int k=10;}  //最后
private static char c='c';  //第二个


对于static的成员变量时,只在第一次进行初始化,后面无论再创建多少个对象,都不会第二次初始化。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java 初始化