首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >方法中的可变范围

方法中的可变范围
EN

Stack Overflow用户
提问于 2015-03-24 20:04:48
回答 2查看 181关注 0票数 1

问题来自于著名的SCJP 6书。

  1. 给予: 公共类Dark { int x= 3;public静态void (String[] args) { new ().go1();} void go1() { int x;go2(++x);}voidgo2( int y) {int x= ++y;System.out.println(x);}} 结果是什么? A. 2 B. 3 C. 4 D. 5 E.汇编失败 F.在运行时引发异常

根据这本书,答案是:

✓E是正确的。在go1()中,局部变量x没有初始化。

我的问题是为什么go1()不能在第4行中使用初始化为6的实例变量x?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-03-24 20:08:02

因为局部变量x存在。如果int x;被注释掉,它将运行良好并使用实例变量。

票数 3
EN

Stack Overflow用户

发布于 2015-03-24 20:13:19

在Java中,所有的局部变量都应该被初始化,如果不是的话,就会产生一个错误。但是不应该初始化方法的参数。

如果你没有int x,那就可以了。因为在这种情况下,编译器将使用为类级别分配的局部变量。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29241864

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档