美文网首页Java 杂谈互联网科技程序员
局部变量和成员变量的初始值问题

局部变量和成员变量的初始值问题

作者: JAVA高级架构开发 | 来源:发表于2018-08-09 17:49 被阅读5次

    引言

    大家都知道,在java中,成员变量是可以不用给初始值的,默认就有一个初始值。而局部变量,必须显示给予一个初始值,否则编译无法通过。大家在学习的时候,一般是直接把这个结论直接记下,很少去考虑原因。

    所以,这是为什么呢?

    正文

    比如

    这段代码是会出现如下编译异常的

    但是,像下面这么写就不会

    javac这么设计的原因,不是因为推断不出局部变量的初始值,而是出于严谨性的考虑。

    成员变量

    无法确定你的调用顺序,例如,你可以这么调

    也可以这么调

    编译器无法确定name的初始值,于是给了一个初始值。真正的值,交给jvm在运行时期处理。

    局部变量

    可以明确你的调用顺序,我相信应该没人会像下面这么写

    在局部变量中,必然是先声明一个变量,再进行赋值。于是,java的编译器觉得,既然你肯定是先声明一个变量,再调这个变量了。那就在声明的时候,就把初始值给我吧。不是我不能推断你的初始值,而是让你在声明的时候就把初始值给我,我是为你好,帮你减少代码出错的可能性。

    相关文章

      网友评论

        本文标题:局部变量和成员变量的初始值问题

        本文链接:https://www.haomeiwen.com/subject/rppcbftx.html