成员变量初始化
java中直接在方法中定义一个变量(未初始化),直接使用编译器会报错。
Boolean bool ;
//基本数据类型 没有初始化直接使用会报错
System.out.println(bool);但作为类的成员变量则Java语言会自动初始化它的值。
例如:
public class Test {
public boolean bool;
public static void main(String[] args) {
List list= new ArrayList();
//小写的boolean 是基本数据类型。
Boolean bool = null ;
//基本数据类型 没有初始化直接使用会报错
System.out.println(bool);
System.out.println(new Test().bool);
}
}输出结果: null
null
原因:(以下摘抄至 《Java的编程思想》这本书)
若某个主数据类型属于一个类成员,那么即使不明确(显式)进行初始化,也可以保证它们获得一个默认
值。
主类型 默认值
Boolean false
Char '\u0000'(null)
byte (byte)0
short (short)0
int 0
long 0L
float 0.0f
double 0.0d
一旦将变量作为类成员使用,就要特别注意由Java 分配的默认值。这样做可保证主类型的成员变量肯定得到
了初始化(C++不具备这一功能),可有效遏止多种相关的编程错误。
然而,这种保证却并不适用于“局部”变量——那些变量并非一个类的字段。所以,假若在一个函数定义中
写入下述代码:
int x;
那么x 会得到一些随机值(这与C 和C++是一样的),不会自动初始化成零。我们责任是在正式使用x 前分
配一个适当的值。如果忘记,就会得到一条编译期错误,告诉我们变量可能尚未初始化。这种处理正是Java
优于C++的表现之一。许多C++编译器会对变量未初始化发出警告,但在Java 里却是错误。
本文探讨了Java中变量初始化的特点,特别是在方法内部与作为类成员时的不同表现。详细解释了基本数据类型与引用类型变量在不同场景下的默认初始化行为,并通过示例代码说明了这些概念。
745

被折叠的 条评论
为什么被折叠?



