局部变量和成员变量

2019-03-04  本文已影响0人  云鲸鱼rain

面试题。


局部变量使用前需要显式地赋值,否则编译通过不了,为什么这么设计


https://blog.csdn.net/x2L5gX/article/details/81090855一看就明白了。
然后我再自己写一下:
成员变量不用显式赋值,在类加载的过程中给它赋予了默认值。
局部变量需要显式赋值。
为啥不给它赋予默认值?
不是javac推断不出来,而是因为推断出来了,故意不这么做。
为啥故意不这么做?
因为局部变量的作用就是在局部方法中某个地方取出来用。在一个方法体内赋值和取值的顺序是固定,先赋值,才能取值。强制你赋值时因为怕你忘了!怕有了默认值之后忘记赋值导致不可预期的bug!
那为啥成员变量有了默认值不怕有bug?
因为成员变量不确定什么就会被取值出来用,还有可能在各个方法中是不同的值。所以强制让你赋值和给它默认值没什么区别,既然这样,为什么不默认呢?

上一篇下一篇

猜你喜欢

热点阅读