
数组是变量,是存储相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
一、数组四要素:数组名称(标识符),数组元素,元素类型,元素下标(从0开始)
注意:数组一经创建,长度不可变,元素类型不可变(一个数组的元素必须属于同一类型)
二、创建并调用数组
1. 新建数组
double[] scores; // double scores[]; 的写法也是可以的,根据自己习惯选择
//声明数组时不规定数组长度
2. 分配空间
scores = new double[5];
//1、2两步可以合并:
double[] scores = new double[5];
3. 给数组内元素赋值
scores[0] = 70;
scores[1] = 80;
scores[3] = 92;
/* 数组创建的时候,赋值前,每个元素就有默认值/初始值:
* int默认0,double默认0.0,string默认null,char默认空字符(即"")
*/
//1、2、3三步也可以合并,下面两个写法均可
double[] scores = {70,80,0,92,0};
double[] scores = new double[]{70,80,0,92,0}; //这种方式不能指定数组长度
//给数组赋值还可以利用扫描器和循环,动态输入信息并赋值
Scanner input = new Scanner(System.in);
for(int i=0;i
4. 调用内存
// for 循环遍历数组
for(int i = 0;i < 5;i++) {
System.out.println(scores[i]);
}
//增强 for 循环遍历数组
for(double s : scores){
System.out.println(s);
}
三、数组应用实例
1. 猜数游戏
Scanner input = new Scanner(System.in);
int[] nums = {8,4,2,1,23,344,12};
int sum = 0;
boolean flag = false;
System.out.print("请输入一个数:");
int num = input.nextInt();
for(int i = 0;i < nums.length;i++) {
System.out.print(nums[i] + " ");
sum += nums[i];
if(num == nums[i])
flag = true;
}
System.out.println();
System.out.println("数列中所有数值的和为:" + sum);
//三元表达式可以一步输出数列中是否包含输入的数字
System.out.println(flag ? "数列中包含输入的数字":"数列中不包含输入的数字");
2. 利用数组找出最大值
Scanner input = new Scanner(System.in);
double[] score = new double[5];
double max;
//给max赋值,确保max从目标数组内找出
System.out.print("请输入第1位学生的考试成绩:");
max = input.nextDouble();
for(int i = 1;i < 5;i++) {
System.out.print("请输入第" + (i+1) + "位学生的考试成绩:");
score[i] = input.nextDouble();
max = Math.max(max, score[i]);
}
System.out.println("本次考试最高分是:" + max);
3. 数列中插入一个数,保持降序
Scanner input = new Scanner(System.in);
//创建原始数组
int[] numbers = new int[6];
numbers[0] = 99;
numbers[1] = 85;
numbers[2] = 82;
numbers[3] = 63;
numbers[4] = 60;
//输入要插入的数
System.out.print("请输入新增成绩:");
int newScore = input.nextInt();
//1.找到要插入的位置,创建下标
int index = 0;
for(int i = 0;i < numbers.length;i++) {
if(numbers[i] > newScore) {
index++;
}
}
//2.数组后移
for(int i = numbers.length-1;i > index;i--) {
numbers[i] = numbers[i-1];
}
//3.插入新数据
numbers[index] = newScore;
//打印插入数据后的数组
System.out.println("插入新成绩后的数组为:");
for(int i = 0;i < numbers.length;i++) {
System.out.print(numbers[i] + " ");
}
四、冒泡排序
从[0],[1]开始,相邻的元素两两比较,较大的(或较小的)往后换,从而达到从最后一个开始往前,数值越来越小(大)的结果
//已知数组需要进行升序排列
int[] number = {23,45,67,66,4,2,75,43,656,-23};
int temp; //创建临时变量,方便相邻元素比较后进行数值交换
//外部循环表示比较的轮数
for(int i = 1;i < number.length;i++) {
//内部循环表示每轮比较的次数
for(int j = 0;j < number.length - i;j++) {
//如果相邻元素中数值较大的靠前,则交换数值
if(number[j]>number[j+1]) {
temp = number[j];
number[j] = number[j+1];
number[j+1] = temp;
}
}
}
//排序后打印
for(int i = 0;i < number.length;i++) {
System.out.print(number[i] + " ");
}
五、java工具类之 Arrays类
Arrays类的一些常用方法:
- boolean equals(array1,array2)=======比较array1和array2两个数组是否相等
- sort(array)=======对数组array的元素进行升序排列
- String toString(array)=======将一个数组array转换成一个字符串
- void fill(array,val)=======把数组array所有元素都赋值为val
- copyOf(array,length)=======把数组array复制成一个长度为length的新数组,返回类型与复制的数组一致
- int binarySearch(array, val)=======查询元素值val在数组array中的下标(要求数组中元素已经按升序排列)
六、多维数组(二维数组)
二维数组实际上是一个以一维数组做为元素的一维数组
1. 创建数组
// scores 是一个长度为5的数组,其中每一个元素又是一个长度为10的数组
int [][] scores; //定义二维数组(和一维数组一样,int scores [][]; 的写法也是可以的,自由选择)
scores = new int[5][10]; //分配内存空间
int[][] scores = new int[5][10]; //定义数组的同时分配空间
//这里的10可以不定义,但外维数组的长度必须定义,即 int[][] scores = new int[5][]; 也是可以的
2. 赋值及调用
scores[0][2] = 7; //这里表示将7赋值给scores数组的第一个元素数组的第3个元素
System.out.println(scores[0][2]);
3.创建数组的同时赋值
int[][] scores = new int[][] {{50,76,97},{24,5,34,65,67,45,34},{65,76,68,35,47,34,87},{0,25,77,6},{2,4,5,6,433}};
int[][] scores = {{50,76,97,45,46,22,7},{43,24,5,34,65,67,45,34},{65,76,68,35,47,34,87}};欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)