import java.util.Scanner;
public class Shuzhu{
public static void main(String[]args){
//练习点1:储存6个人的身高,不采用数组接收数据的做法
int a = 163;
int b = 172;
int c = 175;
int d = 159;
int e = 166;
int f = 178;
//也就是说,6个人的话,需要6个变量,假如有几百个人的时候,这个方法就不适合了。
System.out.println("6个人的身高分别为:"+a+","+b+","+c+","+d+","+e+","+f);
//练习点2:储存6个人的身高,采用数组接收数据,并读取数组
//可以使用数组来接收多个相同类型的数据
//数组的定义格式:数组的数据类型+[]+数组的名称 = 数据类型[输入数组的长度]+冒号结尾
//记住:我们不能直接给数组赋值,需要先制定数组的长度
int[]g = new int[6];
//在数组中存放数据:数组名称+[数组的下标]=你存放的数据+冒号结尾,如下:
g[0] = 163;
g[1] = 172;
g[2] = 175;
g[3] = 159;
g[4] = 166;
g[5] = 178;
//数组数据的获取方法是数组名称加数组下标,数组下标是从0开始的。
System.out.println("6个人的身高分别 为:"+g[0]+","+g[1]+","+g[2]+","+g[3]+","+g[4]+","+g[5]);
//使用传统的拼接方式输出下标为0-5数组的内容
//练习点3:使用for循环的方式输出下标从0-5数组的内容
for(int i = 0; i< g.length; i++){
//i的值实从0开始每次循环自增1,到5后结束循环,也就是i等于从0到5的值
//我们只需要将下标的数字用变量i表示,就可以把从0-5的下标挨个输出啦
System.out.println(g[i]);
}
//练习点4:下面使用传统的方式输入输出下标从0-2数组的内容
int j[] = new int[3];
Scanner k = new Scanner(System.in);//开启键盘扫描
System.out.println("请输入第1个整数:");
j[0]=k.nextInt();
System.out.println("请输入第2个整数:");
j[1]=k.nextInt();
System.out.println("请输入第3个整数:");
j[2]=k.nextInt();
System.out.println("您的输入为:"+j[0]+","+j[1]+","+j[2]);
//练习点5:下面使用for循环的方式输入输出下标从0-2数组的内容
int l[] = new int[3];
System.out.println("这个数组的长度为:"+l.length);
for (int n = 0; n
System.out.println("请输入第"+(int)n+1+"个整数:");
l[n]=k.nextInt();
}
System.out.println("您的输入为:"+l[0]+","+l[1]+","+l[2]);
//练习点6:下面使用for循环的方式输入输出下标从0-2数组的内容,然后求和
int n[] = new int[3];
int sum = 0;//定义一个求和用的变量
for(int o = 0; o
System.out.println("输入:");
n[o]=k.nextInt();
sum = sum+n[o];//这句也可以写成:sum += n[o] 的形式
}
System.out.println("和是:"+sum);
//练习点7:使用简洁的方式定义一组数组
//记住,有时候为了方便,我们也使用 int [] a = {1,2,3,4,5,6} 这样的形式来定义一个数组。
int [] p = {20,50,30,100};
for(int q=0;q
System.out.println(p[q]);//输出下标为变量的数组内容
}
k.close();//关闭键盘扫描
}
}
说明:
数组必须进行初始化才能使用,下面是创建一个数组abcde,然后对其初始化:
int [] abcde; // 创建一个叫abcde的int类型的数组。
abcde = new int[3]; //在隔壁的堆中,为abcde分配一个内存地址,并将分配的内存区域划分出3个房间,房间号分别是0、1、2,三个房间内的值都是0(int类型的默认值是0)
double [] ccc; // 创建一个叫ccc的double类型的数组。
abcde = new double[5]; //在隔壁的堆中,为ccc分配一个内存地址,并将分配的内存区域划分出5个房间,房间号分别是0、1、2、3、4,五个房间内的值都是0.0(double类型的默认值是0.0)
new 这个初始化过程,其实就是让数组进入堆分配空间
下面是一般的常规的写法,可将定义数组和初始化直接写成一句就可以:
int [] abcde = new int[3];
常见报错说明
数组索引越界异常
当调用一个数组,调用的索引超出数组的候范围时,就会报这个错误
int [] aaa = new int[3];
System.out.println(aaa[5]); //错误:数组索引越界
说明:内存中划分的索引是0、1、2,调用的却是索引5,因为没这个索引所以会报错。
空指针异常
当数组创建后,没用进行初始化,当我们调用索引的时候,就会报这个错误,也就是说,数组没有创建索引。
int [] aaa;
System.out.println(aaa[1]); //错误:空指针
说明:内存中压根就没索引所以会报错。
下面是正常的:
int [] aaa = new int[3];
System.out.println(aaa[1]); //正常
数组的初始化
数组有两种初始化方式,一种是静态,一种是动态
静态就是指定数组的内容,动态就是只指定数组的长度而不指定内容。
int [] aaa = new int[3]; //这是动态初始化
int [] bbb = new int[]{10,20,50}; //这是静态初始化
静态初始化
数组的内存地址
数组作为方法返回值_返回
去超市买了很多东西,一个手拿不住,可以要一个塑料袋将这些东西全兜着提回家,数组就相当于这个塑料袋
一个方法里面,只能有一个返回值,或者没有返回值,不能是2个或者以上的返回值。
当我们需要返回多个参数的时候,可以使用数组进行"打包"返回.
int [] sssss = aaaaaaaaaa(10,20,30)
public static int [] aaa(int a,int b,int c){
int cess1 = a+b; //求和
int cess2 = a*b; //求乘
int cess3 = a/b; //求除
int [] abcdef = new int [3] ; //准备一个能装3个数的数组(塑料袋)
abcdef [0] = cess1; //把和装进去
abcdef [1] = cess2; //把乘装进去
abcdef [2] = cess3; //把除装进去
return abcdef;//将打包好的塑料袋返回给调用出
int [] abcedf= {cess1,cess2,cess3};
}