JAVA程序设计--对象和类(七)

对象数组

复习下对象的创建:

对象是通过对象引用变量来访问的。类是一种引用类型,格式如下:    

Circle myCircle;

下面的语句创建一个对象,并且将他的引用赋给变量myCircle:

myCircle = new Circle();

二者合一,就是包括声明对象引用变量、创建一个对象和将他的引用赋给变量:

Circle myCircle = new Circle(); 

如上:变量myCircle中放的是对Circle对象的引用。


以此类推,数组也是new创建的,一个数组变量实际上是一个包含数组引用的变量~

数组的创建:

声明一个数组变量、创建数组、然后将数组引用赋值给变量:

elementType[] arrayRefVar = new elemenType[arraySize];

elementType arrayRefVar[] = new elemenType[arraySize];


对象的数组实际上是引用变量的数组。当使用new操作符创建对象数组后,这个数组中的每个元素都是默认值为null的引用变量。


实例:

package test;

public class TotalArea {
  /** Main method */
  public static void main(String[] args) {
    // Declare circleArray
    CircleWithPrivateDataFields[] circleArray;

    // Create circleArray
    circleArray = createCircleArray();

    // Print circleArray and total areas of the circles
    printCircleArray(circleArray);
  }

  /** Create an array of Circle objects */
  public static CircleWithPrivateDataFields[] createCircleArray() {
    CircleWithPrivateDataFields[] circleArray = 
      new CircleWithPrivateDataFields[5];

    for (int i = 0; i < circleArray.length; i++) {
      circleArray[i] = 
        new CircleWithPrivateDataFields(Math.random() * 100);
    }

    // Return Circle array
    return circleArray;
  }

  /** Print an array of circles and their total area */
  public static void printCircleArray(
      CircleWithPrivateDataFields[] circleArray) {
    System.out.printf("%-30s%-15s\n", "Radius", "Area");
    for (int i = 0; i < circleArray.length; i++) {
      System.out.printf("%-30f%-15f\n", circleArray[i].getRadius(),
        circleArray[i].getArea());
    }

    System.out.println("-----------------------------------------");

    // Compute and display the result
    System.out.printf("%-30s%-15f\n", "The total areas of circles is",
      sum(circleArray));
  }

  /** Add circle areas */
  public static double sum(
      CircleWithPrivateDataFields[] circleArray) {
    // Initialize sum
    double sum = 0;

    // Add areas to sum
    for (int i = 0; i < circleArray.length; i++)
      sum += circleArray[i].getArea();

    return sum;
  }
}

结果:

Radius                        Area           
71.932202                     16255.359460   
61.031120                     11701.796664   
68.740565                     14844.858538   
12.298561                     475.180314     
21.631531                     1470.023842    
-----------------------------------------
The total areas of circles is 44747.218816   


主方法是将对象数组传进方法里;

而在CircleWithPrivateDataFields[] 类型的静态方法里,return  circleArray,所以次方法可以在主方法里赋给刚刚声明的对象。

猜你喜欢

转载自blog.csdn.net/qq_35827280/article/details/80316331