使用方法访问数组

时间:2013-09-11 22:49:49

标签: java

大家好我刚刚开始学习Java,我想知道如何访问另一个方法在方法中声明的数组? 设计看起来像这样:

public class Arrays{
  int arraysize = 2;

     public void initializeArray(){
    float array[] = new float[arraySize]; // Declare array  
     }

     public void accessArray(){
     // I want to access the array from this method.
     }

}

4 个答案:

答案 0 :(得分:3)

了解java中变量的范围。这是我在快速Google搜索中找到的链接。 http://www.java-made-easy.com/variable-scope.html

您可以在类级别声明数组,然后可以在所有方法中访问它。

    public class Arrays {
    int arraysize = 2;
    private float[] array = null;

    public void initializeArray() {
        array = new float[arraySize]; // Declare array
    }

    public void accessArray() {
        // access array here.
    }
}

或者您可以在方法中传递变量。

    public class Arrays {
    int arraysize = 2;

    public void initializeArray() {
        float[] array = new float[arraySize]; // Declare array
        accessArray(array);
    }

    public void accessArray(float[] array) {
        // access array here.
    }
}

鉴于信息量,我有问题,方法1似乎比2好。

答案 1 :(得分:1)

您需要移动声明以使其成为成员,否则一旦initializeArray呼叫结束,它将超出范围。然后,您可以从这两种方法访问该数组。试试这个:

public class Arrays{
   float[] array;
   int arraysize = 2;

   public void initializeArray(){
      array = new float[arraySize];   // Declare array  
   }

   public void accessArray(){
      array[0] = 1.0f;
   }
 }

答案 2 :(得分:1)

这样就完成了

public class myClass{
  int arraysize = 2;
  float[] myArray; // Declare array

  public myClass(){
    myArray = new float[arraySize]; // initialize array 
  }

  public float[] accessArray(){
    return myArray;
  }
}

不能在类方法中完成数组声明。 在方法内完成的变量声明将变量的范围限制为方法。 (即你不能在其他地方使用它。)

然后在构造函数中实例化该数组。 构造函数是在实例化类时运行的特殊函数。 构造函数用于实例化类的变量 构造函数与其类具有相同的名称,并且不能指定返回类型(因此没有public int或public void public public)

接下来,您需要更改accessArray方法的返回类型。返回类型的void表示该方法不会返回任何内容。将其更改为float [] 然后你的accessArray方法只需返回数组变量。

编辑:     “返回myArray;” 代码行给出了对数组的引用,它引用了函数(不是数组的副本,实际的数组,快速的Java是它总是这样做,除非返回原始数据类型时返回副本)< / p>

如果你想让accessArray()在数组中设置浮点数而不是返回数组,那么它应该像这样实现。

public void accessArray(int index, float value){
  myArray[index] = value;
}

答案 3 :(得分:0)

有两种选择:

  • 您将该数组声明为实例变量
public class Arrays {

    private int arraySize = 2;
    private float array[];// Declare array

    public void initializeArray() {
        array = new float[arraySize];
    }

    public void accessArray() {
        // I want to access the array from this method.
        float first = array[0];
    }
}
  • 您将数组作为参数传递给方法(相应地,initializeArray方法应该返回一个数组)
public class Arrays {

    public static void main(String[] args) {
        int arraySize = 2;
        float[] array = initializeArray(arraySize);
        accessArray(array);
    }

    public static float[] initializeArray(int size) {
        return new float[size];
    }

    public static void accessArray(float[] floats) {
        // I want to access the array from this method.
        float first = floats[0];
    }
}