局部变量和成员变量的初始值问题
引言
大家都知道,在java中,成員變量是可以不用給初始值的,默認(rèn)就有一個(gè)初始值。而局部變量,必須顯示給予一個(gè)初始值,否則編譯無(wú)法通過(guò)。大家在學(xué)習(xí)的時(shí)候,一般是直接把這個(gè)結(jié)論直接記下,很少去考慮原因。
所以,這是為什么呢?
正文
比如
這段代碼是會(huì)出現(xiàn)如下編譯異常的
但是,像下面這么寫就不會(huì)
javac這么設(shè)計(jì)的原因,不是因?yàn)橥茢嗖怀鼍植孔兞康某跏贾?#xff0c;而是出于嚴(yán)謹(jǐn)性的考慮。
成員變量
你無(wú)法確定你的調(diào)用順序,例如,你可以這么調(diào)
也可以這么調(diào)
編譯器無(wú)法確定name的初始值,于是給了一個(gè)初始值。真正的值,交給jvm在運(yùn)行時(shí)期處理。
局部變量
你可以明確你的調(diào)用順序,我相信應(yīng)該沒(méi)人會(huì)像下面這么寫
在局部變量中,必然是先聲明一個(gè)變量,再進(jìn)行賦值。于是,java的編譯器覺(jué)得,既然你肯定是先聲明一個(gè)變量,再調(diào)這個(gè)變量了。那就在聲明的時(shí)候,就把初始值給我吧。不是我不能推斷你的初始值,而是讓你在聲明的時(shí)候就把初始值給我,我是為你好,幫你減少代碼出錯(cuò)的可能性。
總結(jié)
以上是生活随笔為你收集整理的局部变量和成员变量的初始值问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring 的优秀工具类盘点
- 下一篇: nginx: [error] open(