【问题标题】:How to refer to a variable with method scope from a different method called from method in which variable is declared?如何从声明变量的方法调用的不同方法引用具有方法范围的变量?
【发布时间】:2015-09-12 05:57:06
【问题描述】:

假设我有这样的代码 -

    public class rectangle {
 int length, breadth; // Used some where else for different purpose/calculations
public int area(int length, int breadth)
{
int result = length*breadth;
resetvalues();
return result;

}
public void resetvalues()
 {
 length = "";
breadth = "";
}

所以,在上面的代码中,由于我是从 area 调用 resetvalues 方法,因此 area 方法中定义的长度和宽度变量是在 resetvalues 方法中引用/更改的,而不是在类级别中声明的变量。

如何做到这一点?当从 area 方法调用时,如何使 resetvalues 方法引用在 area 方法中声明的变量?

【问题讨论】:

  • 让它变得简单......你想在你的代码中引用哪个变量以及从哪里引用?
  • 我想从重置值方法中引用区域方法中声明的长度和宽度。基本上我想从不同的方法更改这两个变量的值,该方法是从主方法调用的,其中声明了变量。

标签: java methods global-variables


【解决方案1】:

area() 中的变量是局部或方法范围的。它们不能从方法外部访问。这就是我对变量作用域的理解

你可以直接在area方法里面重置变量,不会影响类变量:

public int area(int length, int breadth)
{
int result = length*breadth;
length = 0;
breadth = 0;
return result;

}

这是一个给出清晰描述的参考:http://www.java-made-easy.com/variable-scope.html

【讨论】:

  • 假设length = ""; breadth = ""; 必须是length = 0; breadth = 0;
  • 是的,我可以在同一方法本身中重置那些值,但在我的实际需求中,我有很多这样的变量,所以我想把它们放在一个方法中并从实际的 main 方法中调用。此外,resetvalues 方法可以在其他地方使用。
  • 变量的本地副本仅在方法调用期间存在。这有两点。 1. 当对 area 进行新的调用时,它会得到一个新的变量副本。 2.当方法区返回时,本地副本不存在了。也许我没有关注你想要达到的目标。
猜你喜欢
  • 2012-06-28
  • 1970-01-01
  • 1970-01-01
  • 2015-12-14
  • 1970-01-01
  • 1970-01-01
  • 2014-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多