Java的局部变量没有系统默认初始值
2016-02-23 21:04
288 查看
在看Think in java 中看到这样一句话:
“未初始化的局部变量更有可能是程序员的疏忽, 所以采用默认值反而会掩盖这种失误”
然后才去验证,发现,局部变量都必须要显式地初始化,不然编译不通过。
而全局变量不用显式地初始化,如果漏掉初始化,系统默认给以初始值:
int ---> 0
long
---> 0L
boolean
---> false
Object
---> null 等等
对于全局变量的默认初始化: “无法阻止自动初始化的进行, 它将在构造器发生之前发生”。
在创建对象时“这块存储空间会被清零,这就自动的将对象中的所有基本类型设置为默认值,而引用设置为NULL”
之前我的理解是:对象在生成时,利用反射可以得到类信息,所以类中的全局变量就可以被默认赋值,但是局部变量是方法被调用之后才会分配存储空间的,也无法通过反射手段得到变量信息,所以必须显式初始化。
“未初始化的局部变量更有可能是程序员的疏忽, 所以采用默认值反而会掩盖这种失误”
然后才去验证,发现,局部变量都必须要显式地初始化,不然编译不通过。
而全局变量不用显式地初始化,如果漏掉初始化,系统默认给以初始值:
int ---> 0
long
---> 0L
boolean
---> false
Object
---> null 等等
对于全局变量的默认初始化: “无法阻止自动初始化的进行, 它将在构造器发生之前发生”。
在创建对象时“这块存储空间会被清零,这就自动的将对象中的所有基本类型设置为默认值,而引用设置为NULL”
之前我的理解是:对象在生成时,利用反射可以得到类信息,所以类中的全局变量就可以被默认赋值,但是局部变量是方法被调用之后才会分配存储空间的,也无法通过反射手段得到变量信息,所以必须显式初始化。
相关文章推荐
- JAVA中的泛型
- windows7+eclipse+hadoop2.5.2环境配置
- 解决springmvc中文件下载功能中使用javax.servlet.ServletOutputStream out = response.getOutputStream();后运行出异常但结果正确的问题
- Spring环境下的 junit 集成测试3
- maven管理Java web项目WEB-INF/lib中jar包不能被引入的问题解决
- java学习日记——this关键字
- 深入理解Java的接口和抽象类
- kettel could not create java virtual machine
- 76_81java
- Java核心技术(第8版)学习笔记_继承(2)_反射
- 配置springmvc在其他类中(spring容器外)获取注入bean
- 利用内存分析工具(Memory Analyzer Tool,MAT)分析java项目内存泄露
- java中条件(&& ||) 逻辑(& | !^)和按位(& | ^ ~)的区别
- 浅谈Struts2拦截器的原理与实现
- struts2中action接收参数的方法
- Struts2校验器(二)之注解
- java中只有值传递没有引用传递
- Struts2校验器(一)之规格文件
- eclipse ctrl+左键进入xml文件
- Java基础之并发编程(二)