数组
1.概念:内存中开辟的用于存储大量相同类型数据的连续空间
大小/长度:数组内可存储多少份数据
元素:数组内的一个格子
下标:指元素的序号(操作元素都是通过下标来完成的)
变量 :房间 数组:有很多层的楼房
变量的使用:
a.声明变量(确定变量类型和变量名称)
b.赋值(将数据保存到变量中)
数组的使用:
a.声明数组:打地基:确定数组的类型和名称
b.开空间:确定楼房的层数:数组的长度 length
2.数组类型
整型数组int[]a;
字符串型数组String[]a;
小数型数组double[]a;
字符型数组char[]a;
3.申明数组的几种方式
方式一:
a.声明数组:数据类型[]数组名;
b.开空间:数组名 = new 数据类型[长度]
c.赋值:数组名[下标] = 值
方式二:
a.声明数组开空间一步完成
b.数据类型[]数组 = new数据类型[长度]
方式三:
a.申明数组开空间赋值一步完成
b.数据类型[]数组名 = new 数据类型[]{元素1,元素2,元素3,…}
简写为:数据类型[]数组名 = {元素1,元素2,元素3,…}
4.取值:数组名[下标] 下标从0开始到数组长度减1
5.应用:增删查改,插入操作,复制操作
数组的使用
- 数组是一种特殊引用类型,如果数组开空间后,没有对元素赋值,他会存在默认值
- int型数组的默认值0
- double型数组的默认值0.0
- String类型的数组默认值null
- char类型的数组默认值(空)
// 将数组合并,将两个数组中的元素合并到一个新数组中//
int[]arr={1,6,3,7,4,9};
int[]brr={10,13,12};
//创建一个新的数组,长度正好等于前面两个数组长度之和
int[]crr = new int[arr.length+brr.length];
//循环赋值
for (int i = 0; i < crr.length; i++) {//i代表crr数组 的下标
//如果i的值小于等于arr数组的最大下标,就进行arr的赋值
if(i<arr.length){
crr[i] = arr[i];
}else{
crr[i] = brr[i-arr.length];//brr数组的下标=crr数组的下标减去第一个数组长度
}
System.out.print(crr[i]+",");
}
// crr[1] = arr[1];
// crr[2] = arr[2];
// crr[3] = arr[3];
// crr[4] = arr[4];
// crr[5] = arr[5];
// crr[6] = brr[0];
// crr[7] = brr[1];
// crr[8] = brr[2];
//将数组中所有的偶数选出,按原来顺序放入到新数组//
int[]arr = {7,9,2,6,1,8,16,20,21,45,61};
//确定数组中偶数的个数
int count = 0;
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2==0){
count++;
}
}
//创建一个新的数组
int[]brr = new int[count];
int j = 0;//代表新数组的下标
//将原来数组的偶数赋值到新数组
for (int i = 0; i < arr.length; i++) {
if(arr[i]%2==0){
brr[j] = arr[i];
j++;
}
}
//输出新数组中的元素
for (int k = 0; k < brr.length; k++) {
System.out.print(brr[k]+" ");
}
//往数组中插入一个整数,保证数组依然有序//
int a = 5;
int[]arr = {1,2,3,4,6,7,8,0};
//找到a应该插入位置的下标
int index = -1;
for (int i = 0; i < arr.length; i++) {
if(a<arr[i]){
index = i;
break;
}
}
//从数组的倒数第二个数到上面找到的下标都往后移动一位
for (int i = arr.length-1; i > index; i--) {
arr[i] = arr[i-1];
}
//将a赋值到对应位置
arr[index] = 5;
//循环输出数组
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
.循环接收6个学生的成绩放至数组内,最后输出最小值和最大值,
最小值为:xxx,最大值为:xxx
Scanner sc = new Scanner(System.in);
int[]scores = new int[6];
scores[0] = sc.nextInt();
int max=scores[0],min=scores[0];
for (int i = 1; i < 6; i++) {
System.out.println("请输入"+(i+1)+"位学员的成绩");
scores[i] = sc.nextInt();
if(scores[i]>max){//最大值比较
max = scores[i];
}
if (scores[i]<min) {//最小值比较
min = scores[i];
}
}
System.out.println("最大值为"+max);
System.out.println("最小值为"+min);
// {1,3,7,9,11,13,15,20,22,36,0}
要求通过扫描仪输入一个整数插入到数组合适的位置并且按原顺序输出//
int[]arr = {1,3,7,9,11,13,15,20,22,36,0};
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数");
int a = sc.nextInt();
int index = arr.length-1;
for (int i = 0; i < arr.length; i++) {
if(a<arr[i]){
index = i;
break;
}
}
for (int i = arr.length-1; i > index; i--) {
arr[i] = arr[i-1];
}
arr[index] = a;
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
//数组的反序{1,2,3,4,5,6}//
int[]arr = {1,2,3,4,5,6};
int temp;
for (int i = 0; i < arr.length/2; i++) {
temp = arr[i];
arr[i] = arr[arr.length-1-i];
arr[arr.length-1-i] = temp;
}
for (int i = 0; i < arr.length; i++) {
System.out.print(arr[i]+" ");
}
//数组元素的删除 {3,5,7,4,1,9,8}//
int[]arr = {3,5,7,4,1,9,8};
Scanner sc = new Scanner(System.in);
System.out.println("请输入要删除的元素:");
int a = sc.nextInt();
int index = -1;
for (int i = 0; i < arr.length-1; i++) {
if(a==arr[i]){
index = i;
break;
}
}
if(index != -1 ){
for ( int i = index; i < arr.length-1; i++) {
arr[i] = arr[i+1];
}
arr[arr.length-1] = 0;
}
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}