16.1 引出问题

数组可以存放多个同一类型数据。

16.2 数组用法

16.2.1 程序员用法

1、数组定义

数据类型 数组名[]=new 数据类型[大小];

int a[]=new int[5];

2、数组引用(使用)

数组名[下标]

a[2]

16.1.2 没事找事用法

第一步:声明数组

数据类型 数据名[]; 也可以 数据类型[] 数据名;

int a[]; 或者 int[] a;

第二步:创建数组

语法:数组名=new 数据类型[大小];

a=new int[10];

第三步:数组引用(使用)

语法:数组名[下标]

a[7]

16.1.3 古板用法

第一步:初始化数组

语法:数据类型 数组名[]=(元素值,元素值...)

int a[]={2,5,6,7,8,89,90,34,56}

第二步:数组的引用(使用)

语法:数组名[下标]

a[7]

16.3 对象数组

16.3.1 引出问题

请思考,既然intfloatdouble...等都可以有数组,那么可不可以有对象数组呢?

对前面的养鸡场的问题进行升级,题目要求如下:

一个养狗场有4只狗,分别是:

名字

重量

花花

4.5kg

白白

5.6kg

黑黑

78kg

红红

9.0kg

请编写一个程序,可以计算它们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找它的体重。

16.4 数组小结

1、数组可存放同一类型数据;

2、简单数据类型(intfloat...)数组,可以直接赋值;

3、对象数组在定义后,赋值时需要再次为每个对象分配空间[即:new 对象]

4、数组大小必须事先指定;

5、数组名可以理解为指向数组首地址的引用;

6、数组的下标是从0开始编号的。

 

 

对象数组使用演示代码如下:

 1 /**日期:2016-03-05
 2  * 功能:对象数组使用演示
 3  */
 4 package test;
 5 import java.io.*;
 6 public class Demo1 {
 7 
 8     public static void main(String[] args) throws Exception {
 9         // TODO Auto-generated method stub
10         
11         //定义一个可以存放四只狗的对象数组
12         Dog dogs[]=new Dog[4];
13 /*        //常规方法
14         //给各个狗赋初值
15         dogs[0]=new Dog(); //这个语句非常重要,因为内存中dogs[0]等默认为null,必须新开辟一个内存区
16         dogs[0].setName("花花");
17         dogs[0].setWeight(4.5f);    */
18         
19         //从控制台输入各个狗的信息
20         InputStreamReader isr=new InputStreamReader(System.in);
21         BufferedReader br=new BufferedReader(isr);
22         for(int i=0;i<4;i++)
23         {
24             dogs[i]=new Dog();
25             System.out.println("请输入第"+(i+1)+"个狗的名字:");
26             String name=br.readLine(); //异常
27             dogs[i].setName(name);
28             System.out.println("请输入第"+(i+1)+"个狗的重量:");
29             String s_weight=br.readLine(); //异常
30             float weight=Float.parseFloat(s_weight); //java默认输入的是字符串,需要转换
31             dogs[i].setWeight(weight);
32         }
33         
34         int allWeight=0;
35         for(int i=0;i<4;i++)
36         {
37             allWeight+=dogs[i].getWeight();
38         }
39         float aveWeight=allWeight/dogs.length;
40         System.out.println("平均体重为:"+aveWeight);
41     }
42 
43 }
44 
45 class Dog
46 {
47     public String getName() {
48         return name;
49     }
50     public void setName(String name) {
51         this.name = name;
52     }
53     public float getWeight() {
54         return weight;
55     }
56     public void setWeight(float weight) {
57         this.weight = weight;
58     }
59     private String name;
60     private float weight;
61 }

 

运行结果如下:

 1 请输入第1个狗的名字:
 2 花花
 3 请输入第1个狗的重量:
 4 12
 5 请输入第2个狗的名字:
 6 白白
 7 请输入第2个狗的重量:
 8 13
 9 请输入第3个狗的名字:
10 黑黑
11 请输入第3个狗的重量:
12 11
13 请输入第4个狗的名字:
14 红红
15 请输入第4个狗的重量:
16 12
17 平均体重为:12.0