设为首页 加入收藏

TOP

Java中final局部变量的生命周期
2014-11-24 13:55:49 来源: 作者: 【 】 浏览:0
Tags:Java final 局部 变量 生命 周期

从C转Java过来,一些基础理论不是太扎实,在使用final局部变量时出现了理解错误,今天验证了一下,记下笔记。


FinalTest是个空类,啥都没有,toString会转换成其地址打印出来,上面一段程序的打印:


可以看到在finalTestFunc()函数中虽然t用final修饰了,但是两次调用,每次都创建了新的对象,final只是标记了t在本次调用中不能再次指向别的对象,并不代表这个对象始终存在,整个程序生命周期中只初始化一次。


为什么会有只初始化一次的错误理解呢?
其实刚开始使用Java的时候,理解是正确的,认为每次都初始化。
但是后来使用内部类,内部类如果访问外部类的变量,这个变量就要加final修饰,因为对Java掌握不到位,此时错误的认为final将变量的生命周期改为了整个程序生命周期,而实际上此处加final是保证变量值一致性。


同样在C++中的const也是这个现象,const局部变量的生命周期仍然是局部的,只有加上static才是全局的。


这段程序输出:


即每次函数调用都创建了新的对象,只有加上在const后加上static,才是只初始化一次。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Android Linux 开发环境搭建 下一篇Android之解析Json数据

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: