变量默认值的问题

变量默认值的问题

能否给解释一下 成员变量有默认值 局部变量为什么没有 能从原理上解释一下嘛 这应该不是语法规范吧

正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
吃吃吃鱼的猫 2019-06-03 10:10:46

同学你好,

首先 Java 语言是这么规定的。

然后为什么 Java 语言要这么规定呢?有什么内部机理吗?

原因可以参考如下,当我们新建一个对象时,Java会在堆中申请一块内存区域用以存放类的数据。而成员变量就是类的数据,也是放在这块内存区域中的。

只需要JVM在申请内存的时候顺便把整块区域都置为零即可完成初始化,方便快捷。

而对于方法的局部变量,是在线程的栈中,栈也可以帮我们初始化,不过有一个问题。对于有些局部变量,在方法的一开始是没有的,有些在循环中的局部变量是要反复的声明多次的。有些局部变量作用域结束后,另一个局部变量又会占用这个局部变量的位置。

所以,一般不会给它设置默认值。

如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~


  • 提问者 慕丝2449866 #1
    (一般不会给)。 但是可以有给的。我可以这么理解吗
    2019-06-03 22:12:05
  • 好帮手慕小班 回复 提问者 慕丝2449866 #2
    同学你好,这里局部变量是没有初始值的哦!局部变量都是在程序运行过程中根据赋值语句来直接赋值的哦!比如,局部变量在方法的一开始是没有的,有些在循环中的局部变量是要反复的声明多次的,所以局部变量是没有初始值的哦! 如果我的回答解决了你的疑惑,请采纳。祝:学习愉快~
    2019-06-04 09:55:23
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师