知识点:
为什么需要数组
数组是一个变量,存储相同数据类型的一组数据
声明一个变量就是在内存空间划出一块合适的空间
声明一个数组就是在内存空间划出一串连续的空间
数组基本要素
标识符 [ ]
数组元素
元素下标:从0开始
元素类型
如何使用数组
int[ ] a=new int[5];
声明数组并分配空间
数据类型[ ] 数组名 = new 数据类型[大小] ;
数组赋值:边声明边赋值
int[ ] scores = {89, 79, 76};
int[ ] scores = new int[ ]{89, 79, 76};
练习代码:
public static void main(String[] args) {
int [] a={1,2,3};
int b[]=new int[5];
Scanner sc = new Scanner(System.in);
for(int i=0;i<5;i++) {
b[i]=sc.nextInt();
}
}
public static void main(String[] args) {
int a[]=new int[5];
int sum=0;
Scanner sc = new Scanner(System.in);
for(int i=0;i<5;i++) {
a[i]=sc.nextInt();
sum+=a[i];
}
double avg=sum/5;
System.out.println(avg);
}
public static void main(String[] args) {
int a[]= {8,4,2,1,23,344,12};
int sum=0;
Scanner sc = new Scanner(System.in);
int n=sc.nextInt();
for(int i=0;i<a.length;i++) {
System.out.println(a[i]);
sum+=a[i];
if(n==a[i]) {
System.out.println("中奖了");
}
}
}
public static void main(String[] args) {
int a[]=new int[5];
int b=0;
Scanner sc = new Scanner(System.in);
System.out.println("输入5名学生的成绩:");
for(int i =0;i<a.length;i++) {
a[i]=sc.nextInt();
if(b<a[i]) {
b=a[i];
}
}
System.out.println(b);
}
插入排序:
//插入排序
public static void main(String[] args) {
//定义一个长度为6的数组
int list[] = new int[6];
list[0] =99;
list[1] =85;
list[2] =82;
list[3] =63;
list[4] =60;
//保存新增成绩插入的位置
int index=0;
System.out.println("请输入新增成绩:");
Scanner input = new Scanner(System.in);
int num = input.nextInt();
//找到新元素的插入位置
for (int i = 0; i < list.length; i++) {
if(num>list[i]) {
index = i;
break;
}
}
//元素的后移处理
for (int j = list.length-1; j >index; j--) {
//index是下标开始的元素后移的一个位置
list[j] = list[j-1];
}
list[index] = num; //数据的插入
System.out.println("插入成绩的下标是:"+index);
System.out.println("插入后的成绩信息是:");
//循环输出目前数组中的元素
for (int k = 0; k < list.length; k++) {
System.out.print(list[k]+"\t");
}
}
冒泡排序:
public static void main(String[] args) {
// 冒泡排序
//创建数组并赋值
int a[]= {7,8,9,2,4,5,6};
//外层循环,比较的轮数
for(int i=0;i<a.length-1;i++) {
//内层循环,每一轮比较的次数
for(int j=0;j<a.length-1-i;j++) {
//判断,如果前面的数大于后面的数,就交换数据
if(a[j]>a[j+1]) {
//交换数据
//定义第三个变量,把前面的值数据赋值给它
int b=a[j];
//把后面的值赋值给前面的数
a[j]=a[j+1];
//把第三个变量的值赋值给后面的数
a[j+1]=b;
}
}
}
System.out.println("冒泡排序后的数据:");
//foreach 循环遍历数组
for(int i : a) {
System.out.println(i);
}
}
public static void main(String[] args) {
int a[]=new int[5];
Scanner sc = new Scanner(System.in);
for(int i=0;i<5;i++) {
a[i]=sc.nextInt();
}
for(int i=0;i<4;i++) {
for(int j=0;j<4-i;j++) {
if(a[j]>a[j+1]) {
int b=a[j];
a[j]=a[j+1];
a[j+1]=b;
}
}
}
System.out.println("学员成绩的降序排列:");
for(int i=4;i>=0;i--) {
System.out.println(a[i]);
}
}
Arrays工具类的使用:
public static void main(String[] args) {
//Arrays 数组的工具类
int[] arr1 = { 10, 30, 20, 40, 50 };
int[] arr2 = { 10, 20, 30, 40, 50 };
int[] arr3 = { 10, 20, 30, 40, 50, 60 };
System.out.println(Arrays.equals(arr1, arr2));
System.out.println(Arrays.equals(arr1, arr3));
Arrays.sort(arr1);
for (int i = 0; i < 5; i++) {
System.out.println(arr1[i]);
}
System.out.println("*******************");
System.out.println(Arrays.toString(arr1));
//void fill(array,val) 把数组array所有元素都赋值为val
System.out.println("******************");
Arrays.fill(arr1, 30);
System.out.println(Arrays.toString(arr1));
}
public static void main(String[] args) {
//copyOf(array,length)
//把数组array赋值成一个长度为length的新数组,返回类型和复制的数组一致
int arr1[]= {10,50,40,30,100,20,25};
int arr2[]=Arrays.copyOf(arr1, 8);
System.out.println(Arrays.toString(arr2));
System.out.println("***************");
//int binarySearch(array,val)
//查询元素值val在数组array中的下标(要求数组中元素已经按照升序排序)
Arrays.sort(arr2);
System.out.println(Arrays.toString(arr2));
int index=Arrays.binarySearch(arr2, 65);
System.out.println(index);
}
public static void main(String[] args) {
char zifu[]={'a','c','u','b','e','p','f','z'};
System.out.print("原字符序列:");
System.out.println(Arrays.toString(zifu));
Arrays.sort(zifu);
System.out.println();
System.out.print("升序排序后:");
System.out.println(Arrays.toString(zifu));
int weizhi=Arrays.binarySearch(zifu, 'b');
System.out.println();
System.out.println("'b'在升序后数组中的位置是:"+weizhi);
}