(一)什么是数组
数组,可以理解为一个巨大的“容器”,里面可以按顺序存放多个类型相同的数据。
比如:存储4名学生的成绩。
数组中的元素可以通过,数组下标来访问,比如:scores[0]就可以取到第一个元素。
(二)Java中数组的使用
1)声明数组
语法: 数组类型[] 数组名
或者 数组类型 数组名[]
比如:
int[] num ;
double scores[] ;
2)分配空间
其实,**就是指定数组中最多可以存储多少个元素**
语法:数组名 = new 数组类型 [数组长度];
其中,数组长度就是数组中存放元素的个数。
num = new int[6];
scores = new double[6];
names = new String[6];
话说,其实,你也可以这样(***声明数组的同时为它分配空间***):
语法: 数组类型[] 数组名 = new 数组类型[数组长度];
或者 数组类型 数组名[] = new 数组类型[数组长度];
int[] num = new int[6];
double scores[] = new double[6.0];
String[] names = new String[6];
3)数组的赋值
分配空间后就可以向数组中放数据了,**可以通过下标来进行赋值!**
比如:
scores[0]=89.0;
names[0]="一份耕耘,一份收获!";
num[5] = 77;
4)处理数组中数据
对赋值后的数组可以进行操作,比如:
System.out.println("names中的第一个元素的值是:" + names[0]);
其实,**“声明+分配空间+赋值”可以一气呵成!** ,比如:
int[] scores={34,56,78,89};
或者
int[] scores= new int[]{34,56,78,89};
***注意:本语句中右边的int[]中必须为空!!!(重要的事说3遍!!!)***
(三)使用循环操作Java中的数组
使用循环控制数组成员的操作。比如:
int scores[]={34,76,56,89};
for(int i = 0 ; i<scores.length ; i++ ){
System.out.println("数组中第"+(i+1)+ "个元素的值是: " + scores[i]);
}
运行结果:
数组中第1个元素的值是:34
数组中第1个元素的值是:76
数组中第1个元素的值是:56
数组中第1个元素的值是:89
⚠:1)数组下标是从0开始的!!!
2)数组下标的范围是:0 到 数组长度减-1(注意不要越界);
数组越界案例:
int scores[] = new int[2];
scores[2] = 40; //数组元素正确赋值的方式是:scores[0] =50 ; scores[1] = 40;
编程练习:
完成 JAVA 程序,实现输出数组中的最大值、最小值和平均值
public class HelloWorld {
public static void main(String[] args) {
// 定义一个整型数组,并赋初值
int[] nums = new int[] { 61, 23, 4, 74, 13, 148, 20 };
int max = nums[0]; // 假定最大值为数组中的第一个元素
int min = nums[0]; // 假定最小值为数组中的第一个元素
double sum = 0;// 累加值
double avg = 0;// 平均值
for (int i = 0; i < nums.length; i++) { // 循环遍历数组中的元素
// 如果当前值大于max,则替换max的值
if(nums[i] > max){
max = nums[i];
}
// 如果当前值小于min,则替换min的值
if (nums[i] < min){
min = nums[i];
}
// 累加求和
sum = sum + nums[i];
}
// 求平均值
avg = sum / nums.length ;
System.out.println("数组中的最大值:" + max);
System.out.println("数组中的最小值:" + min);
System.out.println("数组中的平均值:" + avg);
}
}
(四)使用Arrays类是java中提供的一个工具类,它位于java.util包中,这个类中包含了一些直接操作数组的排序,搜索等。
(1)Arrays常用的方法:
1)排序
语法:Arrays .sort(数组名);
可以使用sort()方法实现对数组的排序,只要将数组名放在sort()的括号中即可,当然,这是一个默认的升序排序!!!
比如:
//导入Arrays类
import java.util.Arrays;
public class HelloWorld {
public static void main(String[] args) {
// 定义一个字符串数组
int[] scores = { 56,67,90};
// 使用Arrays类的sort()方法对数组进行排序
Arrays.sort(hobbys);
System.out.println("排序后的元素为:");
//循环遍历并输出数组中的元素
for( int i = 0 ; i < i.length ; i++ ){
System.out.println(scores[i]);
}
}
2)将数组转化为字符串
语法: Arrays.toString(数组名);
说明:可以使用toString()方法将一个数组转换成字符串,按顺序将多个字符串连接在一起,多个元素之间使用逗号与空格隔开即可。
比如:
//导入Arrays类
import java.util.Arrays;
public class ArraysTest {
public static void main(String[] args) {
// 定义一个字符串数组
String[] bobdys = { "sports", "game", "movie" };
// 使用Arrays类的sort()方法对数组进行排序
Arrays.sort(bobdys);
// 使用Arrays类的toString()方法将数组转换为字符串并输出
System.out.println(Arrays.toString(bobdys));
}
}
运行结果为:
[game, movie, sports]
(2)使用foreach来操组数组
foreach 并不是java中的关键字,是for语句的特殊简化版本,在遍历数组跟集合时,更加方便快捷。
语法:
for(元素类型 元素变量 :遍历对象){
执行代码
}
比如:
import java.util.Arrays;
public class foreachTest {
public static void main(String[] args) {
// 定义一个整型数组,保存成绩信息
int[] scores = { 89, 72, 64, 58, 93 };
System.out.println("使用for循环输出数组中的元素:");
for(int i = 0 ; i < scores.length ; i++ ){
System.out.println(scores[i]);
}
System.out.println();
System.out.println("使用foreach循环输出数组中的元素:");
// 使用foreach遍历输出数组中的元素
for ( int score : scores) {
System.out.println(score);
}
}
}
运行结果:
使用for循环输出数组中的元素:
89
72
64
58
93
使用foreach循环输出数组中的元素:
89
72
64
58
93
(三)Java中的二维数组
二维数组,指的就是一种特殊的一维数组,其中,它的元素成员就是一维数组。
语法:
1)声明数组并分配空间
数据类型[][] 数组名 = new 数据类型[行的个数][列的个数];
或者
数据类型[][] 数组名;
数组名 = new 数据类型[行的个数][列的个数];
比如:
//定义一个5行4列的数组
int[][] sum = new int[5][4];
或者
int[][] sum;
sum = new int[5][4];
2)赋值
二维数组与一维数组的赋值基本相同,均是通过下标来进行赋值的,***索引也是从零开始的呀!***
语法:数组名[行索引][列索引]=值;
比如:
//给3行8列的元素赋值
num[3][8] = 89;
也可以声明的同时进行赋值
数据类型[][] 数组名={{值1,值2....},{值1,值2....},{值1,值2....},{值1,值2..}};
比如:int[][] scores= { {45,78,89},{23,45,25,67}};
3)处理数组
二维数组跟一维数组的处理方式基本一样,只是二维数组多了一对下标而已。
比如:
//定义一个3行4列的二维数组
int num[][] ={ {4,56,7,34},{23,45,56,67},{12,13,15,7}};
//遍历行
for(int i = 0 ;i < num.length ; i++){
//遍历行中元素
for( int j = 0; j < num[i].length ; j++ ){
//输出每个元素
System.out.println(num[i][j]);
}
//换行实现
System.out.println();
}
/*需要了解的:在定义二维数组时也可以只指定行的个数,然后再为每一行分别指定列的个数。如果每行的列数不同,则创建的是不规则的二维数组,比如: */
运行结果:
1
2
3
编程小题:定义一个两行三列的二维数组 names 并赋值,使用二重循环输出二维数组中的元素。
public class HelloWorld {
public static void main(String[] args) {
// 定义两行三列的二维数组并赋值
String names[][]={{"tom","jack","mike"},{"zhangsan","lisi","wangwu"}};
// 通过二重循环输出二维数组中元素的值
for (int i = 0; i < names.length; i++) {
for (int j = 0; j < names[i].length; j++) {
System.out.println(names[i][j]);
}
System.out.println();
}
}
}
输出结果:
tom
jack
mike
zhangsan
lisi
wangwu
OK ,这下对数组这个渣渣的理解就很清楚了!!!