JAVA入门到精通-第16讲-数组
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150513334-468121408.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150513746-406814137.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150514741-516837267.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150521164-484471268.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150521896-2115365913.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150523148-635083051.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150525000-1610958748.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150525860-1933446443.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150526701-479932547.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150526989-671758365.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150527718-382167064.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150528862-1714206962.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150529351-1786129545.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150529877-1773973498.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150530583-937560610.png)
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150531355-887522379.png)
二、关于数组的用法,有几种方式:2、没事找事用法
第一步:先声明数组
语法:数据类型 数组名[]; 也可以 数据类型[] 数组名;
例:int a[];或者int[] a;
第二步:创建数组
语法:数组名=new 数据类型[数组大小];
例:a=new int[10];
第三步:数组的引用(使用)
语法:数组名[下标]
例:引用a数组的第8个元素 a[7]
要想知道数组的大小可以使用数组的length方法
语法:数组名.length
三、关于数组的用法,有几种方式:3、古板用法
(当已知元素值的时候可以使用此法)
1、初始化数组
语法一维数组
什么是数组?
数组可以存放多个同一类型数据。
数组
一、关于数组的用法,有三种方式:1、程序员用法
1、数组的定义
数据类型 数组名[]=new 数据类型[数组大小];
int a[]=new int[5];//定义一个数组名为a的整型数组,并可以放入5个整型数。
说明:这是定义数组的一种方法。
a|a[0]|a[1]|a[2]|a[3]|a[4]|电脑中的数组
3楼|301房|302房|303房|304房|305房|现实中的楼房
楼是存在地球上的,那么数组是存在哪里的呢?-->电脑内存中
2、数组的引用(使用)
数组名[下标]
比如:你要使用a数组的第三个数a[2]
:数据类型 数组名[]={元素值,元素值...};
例:int a[]={2,5,6,7,8,89,90,34,56}
上面的用法相当于:
int a[]=new int[9]
int a[0]=2;int a[1]=5;int a[2]=6;...a[8]=56;
2、数组的引用(使用)
语法:数组名[下标]
例:a数组的第8个元素a[7]
一个问题?
一个养鸡场有6只鸡,它们的体重分别是3kg、5kg、1kg,3.4kg、2kg、50kg。请问这六只鸡的总体重是多少?平均体重是多少?请你编写一个程序。
//数组的必要性[Demo129.java]
public class Demo129 {
public
static void main(String[] args) {
//定义一个可以存放六个float类型的数组
float
arr[]=new float[6];
//使用for循环赋值
//给数组的各个元素赋值
arr[0]=3;
arr[1]=5;
arr[2]=1;
arr[3]=3.4f;
arr[4]=2;
arr[5]=50;
//计算总体重[遍历数组]
float
all=0;
for(int
i=0;i<6;i++){
all+=arr[i];
}
System.out.println("总体重是:"+all);
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150532240-1911132605.png)
-------------------------------------------------------------------------------
数组--一维数组
在运动会上,五个小孩比赛滑轮,他们划完100米用时,分别用了10s/12s/5.7s/9s/14s,请编写一个程序,计算他们的平均时间?
public class Demo130{
public
static void main(String []args){
//使用古板法定义数组并给数组赋值
float
time[]={10,12,5.7f,9,14};
float
zs=0;
for(int
i=0;i<time.length;i++){
zs+=time[i];
}
System.out.println("百米平均用时:"+(zs/time.length)+"s");
//如何知道数组的大小?使用数组的length方法便可知道数组大小
System.out.println(time.length);
}
}
-------------------------------------------------------------------------------
数组
请思考,既然int,float,double..等都可以有数组,那么可不可以有对象数组呢?
对前面的养鸡场的题,进行升级,题要求如下:
一个养狗场有4只狗,分别是:
名字 体重
花花 4.5kg
白白 5.6kg
黑黑 78kg
红红 9.0kg
请编写一个程序,可以计算他们的平均体重,可以找出体重最大和最小的狗的名字,可以通过输入狗的名字,查找它的体重。
//对象数组的使用[Demo131.java]
//import java.io.*;
import java.util.*;
public class Demo131 {
public
static void main(String[] args) throws Exception {//throws Exception将输入错误踢除程序块
//定义一个对象数组可以存放四只狗的对象数组
Dog
dogs[]=new Dog[4];
//给各个狗赋初值
/* dogs[0]=new Dog();
dogs[0].setName("花花");
dogs[0].setWeight(4.5f);
dogs[]*/
//从控制台输入各个狗的信息
// InputStreamReader isr=new InputStreamReader(System.in);
// BufferedReader br=new BufferedReader(isr);
Scanner
sr=new Scanner(System.in);
for(int
i=0;i<4;i++){
dogs[i]=new
Dog();//必需要使用new方法将数组指向Dog类
System.out.println("请输入第"+(i+1)+"狗名");
//从控制台读取狗名
String
name=sr.nextLine();
//将名字赋给对象
dogs[i].setName(name);//将狗名使用set方法传入Dog类中
System.out.println("请输入"+(i+1)+"狗的体重");
String
s_weight=sr.nextLine();
float
weight=Float.parseFloat(s_weight);
//将名字赋给对象
dogs[i].setWeight(weight);//将狗体重使用set方法传入Dog类中
}
//计算总体重
float
allWeight=0;
for(int
i=0;i<4;i++){
allWeight+=dogs[i].getWeight();//将dogs数组中的狗体重从Dog类中取出并累加赋值给总体重
}
//计算平均体重
float
avgWeight=allWeight/dogs.length;
System.out.println("总体重="+allWeight+"\t平均体重="+avgWeight);
//找出体重最大的狗
//假设第一狗体重最大
float
maxWeight=dogs[0].getWeight();
int
maxIndex=0;//定义用于比较体重的下标
//依次和第一只狗比较体重
for(int
i=1;i<dogs.length;i++){
if(maxWeight<dogs[i].getWeight()){
//如何比较的狗体重大于第一只狗的体重则进行修改
maxWeight=dogs[i].getWeight();
maxIndex=i;
}
}
//找出体重最小的狗
float
minWeight=dogs[0].getWeight();
int
minIndex=0;
for(int
j=1;j<dogs.length;j++){
if(minWeight>dogs[j].getWeight()){
//如何比较的狗体重小于第一只狗的体重则进行修改
minWeight=dogs[j].getWeight();
minIndex=j;
}
}
System.out.println("体重大的狗是第"+(maxIndex+1)+"狗,名字叫:"+dogs[maxIndex].getName()+"\t体重是"+maxWeight);
System.out.println("体重小的狗是第"+(minIndex+1)+"狗,名字叫:"+dogs[minIndex].getName()+"\t体重是"+minWeight);
//输入狗的名字查狗的体重
System.out.println("请输入你要找的狗的名字:");
String
cname=sr.nextLine();
int
cIndex=0;
for(int
k=0;k<dogs.length;k++){
if(cname.equals(dogs[k].getName())){//对比狗名。变量名.equals()方法用于字符串比较内容是否一致。
System.out.println("你要找狗名"+
dogs[cIndex].getName()+"\t体重是"+dogs[cIndex].getWeight());
}
}
}
}
//定义一个狗类
class Dog{
private
String name;
private
float weight;
public
String getName() {
return
name;
}
public
void setName(String name) {
this.name
= name;
}
public
float getWeight() {
return
weight;
}
public
void setWeight(float weight) {
this.weight
= weight;
}
}
![](https://img2018.cnblogs.com/blog/1167156/201811/1167156-20181130150534872-1532468459.png)
-------------------------------------------------------------------------------
一维数组--小结
1、数组可存放同一类型数据;
2、简单数据类型(int,float)数组,可直接赋值;
3、对象数组在定义后,赋值时需要再次为每个对象分配空间[即:new 对象];
4、数组大小必须事先指定;
5、数组名可以理解为指向数组首地址的引用;
6、数组的下标是从0开始编号的。