簡體   English   中英

如何在同一個類(Java)中的另一個方法中引用一個方法中的變量?

[英]How can I reference a variable within a method in another method in the same class (Java)?

假設我在一個類下有一個方法:

public void setNetForce(Planet[] planets) {
            this.xNetForce = 0;
            this.yNetForce = 0;
            for(Planet p:planets) {
                if (p == this) {
                    continue;
                }
                this.xNetForce += this.calcPairwiseForceX(p);
                this.yNetForce += this.calcPairwiseForceY(p);
            }

        }

現在,我想在同一類的另一種方法中使用xNetforce和yNetForce的值,該怎么辦?

當您在方法中使用this.xNetForce ,意味着存在實例變量。

因此,它們可以與您在方法中使用的相同方式在其他非靜態方法中使用。

您可以通過移動初始化在同一類的另一種方法中使用xNetforce和yNetForce

this.xNetForce = 0;
this.yNetForce = 0; 

在類級別的setNetForce()方法外部,您可以將其設置為全局或可用於整個類。

據我了解,您有一個Planet對象,該對象保留了xNetForceyNetForce的私有/公共變量。 因此,如果您使用一種方法修改這些值,它們將在對象范圍內保持修改狀態

this.xNetForce = 0;
this.yNetForce = 0;

通過這兩行, xNetForceyNetForce似乎已經在全局范圍內(實例級別)

因此,您可以在同一類的任何方法中愉快地使用它們

但是,如果您想知道如果在此方法中聲明了這些變量,該怎么辦,例如:

public void setNetForce(Planet[] planets) {
int xNetForce = 0;
int yNetForce = 0;
......................
}

然后如何使用它們的另一種方法?

答案是你不能

  1. 要訪問對類的所有實例無處不在的變量值,請將xNetForce和yNetForce設置為靜態,並讓所有實例均可使用它們。
  2. 不要忘記許多線程在玩弄它們的情況,您會錯過它們的最新價值。 您應該進行編程以維護其訪問完整性。
  3. 如果不是靜態的,則您的單個實例可以在整個生命周期中使用變量。

this.xNetForce表示此變量是此類的成員。

'this'子句訪問的任何變量實際上都是類成員。 可以從同一類的任何其他方法訪問類成員。 例:

public class Physics
{

    private int xNetForce;

    public void setNetForce(Planet[] planets) {
                this.xNetForce = 0;

            }

    public void setNetForceValue( int val)
    {
           this.xNetForce=val;
    }

}

如果將類變量聲明為靜態成員,則該類的所有對象將共享同一變量。

    public void setXNetForce () {
    this.xNetForce=xNetForce;
}

    public void setYNetForce () {
    this.yNetForce=yNetForce;
}

    public void getXNetForce() {
 return this.xNetForce;
}
 public void getYNetForce() {
  return this.yNetForce;
}

使用getter和setter

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM