爱采购

发产品

  • 发布供应
  • 管理供应
  • 匿名
点击 339回答 1 2023-07-28 10:44

变量的作用域受代码块限制吗?

已解决 悬赏分:70 - 解决时间 2023-07-29 09:45
反对 0举报 0 收藏 0 评论 0
最佳答案
  • 匿名
支持 0 反对 0 举报 2023-07-28 11:34

大多数过程型语言都有作用域(scope)的概念。作用域决定了在其内定义的变量名的可见性和生命周期。在C、C++和Java中,作用去由花括号的位置决定。在定义域中定义的变量只可用于作用域结束之前。可以正常输出,但是如果我们交换顺序,就会报错。

实际上以上代码在C和C++中是合法的,但是在Java中却不可以这样写,编译器会报告变量x已经定义过。所以,在C和C++里将一个较大的作用域的变量“隐藏”起来的做法,在Java中是不允许的。因为Java设计者认为这样会导致程序混乱。

Java中:

第一种写法:先定义了代码块局部变量后定义方法局部变量,代码块局部变量x只能作用于定义它的代码块,也就是说出了代码块该x就被销毁了,所以后来再定义一个方法局部变量是可以的。

第二种写法:先定义了方法局部变量后定义了代码块局部变量,方法局部变量的作用域是整个方法,出了该方法后这个方法局部变量才被销毁,此例中,在方法局部变量还未被销毁时就定义了相同名字的代码块局部变量,所以被视为重复定义。引用s在作用域的终点就消失了,然而,s指向的String对象仍继续占据内存空间。Java神奇之处在于有一个垃圾回收器,用来监视new创建的所有对象,并辨别那些不会再被引用的对象。随后,释放这些对象的内存空间,以便提供其他对象使用。

更多问题及资料,可以加入星球讨论
每日获取更多最新行业干货与资料


入驻

企业入驻成功 可尊享多重特权

入驻热线:158-7146-9462

请手机扫码访问

小程序

小程序更便捷的查找产品

为您提供专业帮买咨询服务

请用微信扫码

公众号

微信公众号,收获商机

微信扫码关注

顶部