Thinking in java 之'数据初始化'
2015-08-21 20:56
417 查看
若类的某个成员是基本数据类型,即使没有进行初始化,java也会确保它获得一个默认值如下面所示:
boolean:false
char:
'\u0000'(null)
byte:
0
short:
0
int:
0
long:
0L
float:
0.0f
double:
0.0d
当变量作为类的成员使用时,java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,防止产生程序错误。
然而上述确保初始化的方法并不适用于“局部”变量,因此如果在某个方法内部定于有:
int x;
那么变量x得到的可能是任意值,而不会被自动初始化为零,所以在使用前必须对其进行初始化,否则java会在编译时返回一个错误,告诉没有变量进行初始化。
当某个数据是引用数据类型,在定义后没有给它们赋值,如果这个数据是成员变量,那么它会被默认初始化为null,如果是局部变量,则不会被默认被初始化,如果不初始化而去使用则不能编译通过。
如下图所示:
boolean:false
char:
'\u0000'(null)
byte:
0
short:
0
int:
0
long:
0L
float:
0.0f
double:
0.0d
当变量作为类的成员使用时,java才确保给定其默认值,以确保那些是基本类型的成员变量得到初始化,防止产生程序错误。
然而上述确保初始化的方法并不适用于“局部”变量,因此如果在某个方法内部定于有:
int x;
那么变量x得到的可能是任意值,而不会被自动初始化为零,所以在使用前必须对其进行初始化,否则java会在编译时返回一个错误,告诉没有变量进行初始化。
当某个数据是引用数据类型,在定义后没有给它们赋值,如果这个数据是成员变量,那么它会被默认初始化为null,如果是局部变量,则不会被默认被初始化,如果不初始化而去使用则不能编译通过。
如下图所示:
相关文章推荐
- Java简单聊天室
- 从零开始学Java自己利用接口和集合框架做的简单图书管理系统
- 排序算法(Java语言)——归并排序
- java去除重复的字符串和移除不想要的字符串
- jdk、jre和jvm
- 【leetcode】Ugly Number【java】
- struts2 报错:java.lang.NullPointerException: Source must not be null
- metaq spring配置
- Spring EL hello world example
- Java中常见概念
- leetcode-124:Binary Tree Maximum Path Sum(Java)
- leetcode-124:Binary Tree Maximum Path Sum(Java)
- java集合
- 23种设计模式(Java)
- java的string类关于字符串一旦被初始化,就不可以被改变的
- Java心得19
- 解决Debug JDK source 无法查看局部变量的问题方案
- java笔记--java集合框架
- Spring AOP原理
- Java智能卡学习(1)--开发环境配置