本文将详细介绍 数组定义 语法 数组遍历 初始化数组 及案例等
若有细瑕,感谢指正!
1、数组是什么?
数组的本质是一种数据结构,能记录同一种类型的多个数据,数组中的每个数据都叫做元素,所有的元素具有相同的数据类型
2、数组的作用
在程序中,为了方便处理,把具有形态类型的若干变量按照有序的形式组织起来就形成了数组,可以把复杂的运算转换成简单的数组
3、数组语法
数据类型 [] 数组名称 = new 数据类型 [元素个数]
int [] scores = new int [100]
元素个数必须是整数 元素个数可以是变量
数组中的所有元素具有相同的数据类型,一旦创建不能改变大小
4、注意事项
访问数组都是从下标开始的
都是从0开始的
最小的下标是0,最大下标是数组的元素个数-1
5、数组遍历是什么?
数组遍历就是对数组所有元素进行访问
这里就需要用到
length (长度)
length的作用是可以告知数组里元素的数量
char [] score = {'一','个','大'};
for( char a = 0; a < score.length;a++){
System.out.println( score[a]);
}
输出结果 一 个 大
5.1、length的案例
int[] minzi = { 35, 27, 38, 59, 60, 87,65,89, };// 大括号给出数组所有元素的初始值
System.out.println(minzi.length);
// length 会告诉数组里元素的数量
for (int a = 0; a < minzi.length; a++) {
System.out.println(minzi[a] + “”);
输出结果 8 35 27 38 59 60 87 65 89
6、数组下标的合法区间
int[] a = new int [4];
a[0] =35;
a[1] =28;
a[2] =13;
a[3] =9;
数组里的数据类型都是一样的
7、数组的初始化
int [] score ={1, 2, 3 , 4 , 5);
想要给数组对象分配存储空间 ,必须使用初始化表达式
8、数组变量赋值解析
int[] a = new int[10];// 数组变量是数组的管理者而非数组本身
a [0] = 5; //数组必须创建出来然后交给数组变量来管理
int [] b = a; // 数组变量之间的赋值是管理权限的赋予
b [0] = 16; //数组变量之间的比较是判断是否管理同一个数组
System.out.println(a[0]);
输出值为16 由此可以判断出 并非数组a和数组b只是共同管理了一个数组 而并非数组中的元素一样
int [] a ={1, 2 ,3, 4 ,5};
int [] b ={1, 2, 3, 4, 5};
System.out.println( a == b);
输出结果为false 也证实了这点
9、for each 循环语句
for语句在循环语句中有着重要的位置,首先它计算一个初始化序列,然后当某个条件为真时,重复执行嵌套语句并计算一个迭代表达式序列;如果为 False,则退出 for循环, for语句常用于遍历数组集合
public class Test {
public static void main(String[] args)
{
int[] a = {1,2,3};
for(int i : a)
System.out.print(i + “,”);
}
} 输出1,2,3
10、二维数组
二维数组本质上是以数组作为数组元素的数组,即“数组的数组”,二维数组又称为矩阵,行列数相等的矩阵称为方阵
int [] a = new int[3][5]; //二维数组 可以看成是3行5列的矩阵
a[0][0] a[0][1] a[0][2] a[0][3] a[0][4]
a[1][0] a[1][1] a[1][2] a[1][3] a[1][4]
a[2][0] a[2][1] a[2][2] a[2][3] a[2][4]
int[] score1=new int[10];
int[][] score2;
String[][] names;
//二维数组的初始化
score2=new int[][]{{1,2,3},{3,4,5,6},{16,7}};//静态初始化
names=new String[6][5];//动态初始化方式一
names=new String[6][];//动态初始化方式二,一定要设置行数
names[0]=new String[5];//第一行中有5个元素
names[1]=new String[4];
names[2]=new String[7];
names[3]=new String[5];
names[4]=new String[8];
names[5]=new String[5];
System.out.println("第一行中的元素:"+names[1].length);
System.out.println(names.length);//打印的是二维数组有几行
//如何遍历二维数组
for(int m=0;m<score2.length;m++){//控制行数
for(int n=0;n<score2[m].length;n++){//一行中有多少个元素(即多少列)
System.out.print(score2[m][n]+" ");
}
System.out.println();
}
11、数组案例
需求 输出0-9范围的整数 统计每种数字出现的次数 输入-1结束
思路: 数据 计算 输出
java.util.Scanner s = new java.util.Scanner(System.in); // 键盘输入指令
int[] numbers = new int[10]; // 第一步 创建一个数组
int a;// 第二步 确定数据类型
// for(int b =0; b <numbers.length;b++)
// System.out.println(numbers [b]);
a = s.nextInt(); // 第三步 使用键盘指令输入值
while (a != -1) // 第四步 判断 输入a的值 不等于负1的情况下
{
if (a >= 0 && a <= 10) // 第五步 输入的值a 大于等于0 并且 输入值a 小于等于10 符合数组要求 0-10
{
numbers[a]++;// 第六步 数组参与运算每次自加1
}
a = s.nextInt(); // 第七步 使用键盘输入值
}
for (int b = 0; b < numbers.length; b++) // 第八步 b的值从0开始,开始循环每次自加1,length可以查找数组里的元素
{
System.out.println(b + "出现的次数是:" + numbers[b]);// 输出结果
}
需求 :输入一个数字 通过for each循环来确定该数据是否存在。
java.util.Scanner s = new java.util.Scanner(System.in);
int[] data = { 2, 3, 5, 7, 9, 11 }; //初始化数组
int a = s.nextInt(); //键盘输入指令
boolean found = false; //先默认为假
for (int b : data) { //访问数组里的元素 不能以 < >这样的运算符
if (a == b) {// 若输入 的值 a == b
found = true; //则判断结果为真
break; // 中断此次循环
}
}
if (found) {
System.out.println(a + "在其中");
} else {
System.out.println(a + "不在其中");
}