数组

发布时间:2022-06-21 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了数组脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。

1.数组的概述

  • 多个相同类型的数据按照一定顺序排列的集合,并使用一个名字命名,并通过编号的方式对这些数据进行统一管理。

  • 数组相关的概念:

    • 数组名

    • 下标(或索引、角标)

    • 元素

    • 数组的长度,元素的个数

  • 数组的特点:

    • 数组是有序排列的

    • 数组属于引用数据类型的变量,数组的元素可以是基本数据类型,也可以是引用数据类型

    • 创建数组对象会在内存中开辟一整块连续的空间

    • 数组的长度一旦确定,就不能修改

  • 数组的分类:

    • 按照维数,一维数组、二维数组......

    • 按照数组元素类型,基本数据类型元素的数组、引用数据类型元素的数组

2.一维数组的使用

  • 一维数组的声明和初始化

    • 数组一旦初始化完成,其长度就确定了

  • 如何调用数组的指定位置元素:通过角标的方式调用

    • 数组的角标(或索引)从0开始,到数组的长度-1结束。

  • 如何获取数组的长度

  • 如何遍历数组

  • 数组元素的默认初始化值

    • 数组元素是整型:0

    • 数组元素是浮点型:0.0

    • 数组元素是char型:0或'u0000',而非'0'

    • 数组元素是boolean型:false

    • 数组元素是引用数据类型:null

  • 数组的内存解析

数组

 1 //一维数组的声明和初始化
 2 int num;//声明
 3 num=10;//初始化
 4 int id=1001;//声明+初始化
 5 
 6 int[] ids;//声明
 7 //静态初始化:数组初始化和数组元素的赋值操作同时进行
 8 ids=new int{1001,1002,1003@H_512_249@};
 9 //动态初始化:数组初始化和数组元素的赋值操作分开进行
10 String[] names=new String[5];
1 //如何调用数组的指定位置元素:通过角标的方式调用
2 //数组的角标(或索引)从0开始,到数组的长度-1结束。
3 names[0]="张三";
4 names[1]="李四";
5 names[2]="王二";
6 names[3]="小明";
7 names[4]="老王";
1 //如何获取数组的长度
2 //属性:length
3  System.out.PRintln(names.length);//5
4  System.out.println(ids.length);//3
1 //如何遍历数组
2 for(int i=0;i<names.length;i++){
3    System.out.println(names[i]);
4 }
 1 //数组元素的默认初始化值
 2 int[] arr=new int[4];
 3 for(int i=0;i<arr.length;i++){
 4    System.out.println(arr[i]);
 5 }
 6 
 7 short[] arr1=new short[4];
 8 for(int i=0;i<arr1.length;i++){
 9    System.out.println(arr1[i]);
10 }
11 
12 char[] arr3=new char[4];
13 for(int i=0;i<arr3.length;i++){
14    System.out.println(arr3[i]);
15 }
16 
17 boolean[] arr4=new boolean[4];
18 for(int i=0;i<arr4.length;i++){
19    System.out.println(arr4[i]);
20 }
21 
22 String[] arr5=new String[4];
23 for(int i=0;i<arr5.length;i++){
24    System.out.println(arr5[i]);
25 }
1 //数组的内存解析

数组

练习1:

升景坊单间短期出租4个月,5550元/月(水煤公摊,网费35元/月),空调、卫生间、厨房齐全。屋内均是IT行业人士,喜欢安静,所以要求来租者最好是同行业年轻人,爱干净、安静。

1 int[] arr=new int{8,2,1,0,3};
2 int[] index=new int{2,0,3,2,4,0,1,3,2,3,3};
3 String tel="";
4 for(int i=0;i<index.length;i++){
5   tel+=arr[index[i]];//18013820100
6 }
7 System.out.println("联系方式:"+tel);

练习2:

从键盘读入学生成绩,找出最高分,并输入学生成绩等级。

成绩>=最高分-10 等级为’A'

成绩>=最高分-20 等级为’B'

成绩>=最高分-30 等级为’C'

其余 等级为‘D'

 1 //1.使用Scanner读取学生成绩
 2 Scanner input=new Scanner(System.in);
 3 System.out.println("请输入学生人数:");
 4 int number=input.nextInt();
 5 //2.创建数组,存储学生成绩,动态初始化
 6 int[] scores=new int[number];
 7 //3.给数组中的元素赋值
 8 System.out.println("请输入"+number+"个学生成绩:");
 9 for(int i=0;i<scores.length;i++){
10   score[i]=input.nextInt();
11   }
12 }
13 //4.获取数组中元素的最大值:最高分
14 int max=0;
15 for(int i=0;i<scores.length;i++){
16   if(max<scores[i]){
17     max=scores[i];
18   }
19 }
20 //5.根据每个学生成绩与最高分的差值,得到每个学生的等级,并输出等级和成绩
21 for(int i=0;i<scores.length;i++){
22   if(max-scores[i]<=10){
23     lever='A';
24   }else if(max-scores[i]<=20){
25     lever='B';
26   }else if(max-scores[i]<=30){
27     lever='C';
28   }else{
29     lever='D';
30   }
31  System.out.println("student"+i+"score is"+scores[i]+",grade is"+lever); 
32 }

练习3:

定义数组,存放5个学生的成绩【成绩值自己设定】获得成绩之和,平均成绩,最小成绩,最大成绩。

 1 import java.util.Scanner;
 2 
 3 public class Text19 {
 4     public static void main(String[] args) {
 5 Scanner input=new Scanner(System.in);
 6         int[] score=new int[5];
 7         int sum=0;
 8         for (int i = 0; i <5 ; i++) {
 9        System.out.println("请输入第"+(i+1)+"个人的成绩");
10             score[i]=input.nextInt();
11             sum=sum+score[i];
12         }
13 System.out.println("总成绩为"+sum);
14         double avg=sum/5;
15 System.out.println("平均成绩为"+avg);
16         //获得最小成绩、最大成绩
17         int max=score[0];
18         int min=score[0];
19         for (int a:score) {
20             if (a>max){
21                 max=a;
22             }
23             if (a<min){
24                 min=a;
25             }
26         }
27 System.out.println("最小成绩为"+min);
28 System.out.println("最大成绩为"+max);
29     }
30 }

练习4:数组的复制

1)创建一个类,在main()方法中声明array1和array2两个变量,他们是int[]类型数组

2)使用大括号{ },把array1初始化为8个素数:2,3,5,7,11,13,17,19

3)显示array1内容

4)赋值array2变量等于array1,修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)。打印array1。

5)实现array2对array1数组的复制

 1 int[] array1,array2;
 2 array1=new int{2,3,5,7,11,13,17,19};
 3 
 4 //显示array1内容
 5 for(int i=0;i<array1.length;i++){
 6   System.out.println(array1[i]+"t");
 7 }//2,3,5,7,11,13,17,19
 8 
 9 //赋值array2变量等于array1
10 array2=array1;
11 
12 //修改array2中的偶索引元素,使其等于索引值(如array[0]=0,array[2]=2)
13 for(int i=0;i<array2.length;i++){
14   if(i%2==0){
15     array2[i]=i;
16   }
17 }
18 
19 //打印array1
20 for(int i=0;i<array1.length;i++){
21   System.out.println(array1[i]+"t");
22 }//0,3,2,7,4,13,6,19
23 
24 //实现array2对array1数组的复制
25 array2=new int[array1.length];
26 for(int i=0;i<array2.length;i++){
27   array2[i]=array1[i];
28 }

练习5:数组的复制、反转、查找(线性查找、二分法查找

 1 String[] arr=new String{"JJ","DD","MM","BB","GG","AA"};
 2 //数组的复制
 3 String[] arr1=new String[arr.length];
 4 for(int i=0;i<arr1.length;i++){
 5   arr1[i]=arr[i];
 6 }
 7 
 8 //数组的反转
 9 //方法一:
10 for(int i=0;i<arr.length/2;i++){
11   String temp=arr[i];
12   arr[i]=arr[arr.length-1-i];
13   arr[arr.length-1-i]=temp;
14 }
15 //方法二:
16 for(int i=0,j=arr.length-1;i<j;i++,j--){
17    String temp=arr[i];
18    arr[i]=arr[j];
19   arr[j]=temp;
20 }
21 //遍历
22 for(int i=0;i<arr.length;i++){
23   System.out.println(arr[i]+"t");
24 }
25 
26 //数组的查找
27 //线性查找
28 String dest="BB";
29 boolean flag=true;
30 for(int i=0;i<arr.length;i++){
31   if(dest.equals(arr[i])){
32     System.out.println("找到了指定元素位置为"+i);
33     flag=false;
34     break;
35   }
36 }
37 if(flag){
38   System.out.println("很遗憾,没有找到");
39 }
40 //二分法查找
41 //前提:所要查找的数组必须有序
42 int[] arr2=new int{-98,-34,2,34,54,66,79,105,210,333};
43 int daes1=-34;
44 int head=0;
45 int end=arr2.length-1;
46 boolean flag1=true;
47 while(head<=end){
48   int middle=(head+end)/2;
49   if(dest1==arr2[middle]){
50      System.out.println("找到了指定元素位置为"+middle);
51     flag1=false;
52     break;
53   }else if(arr2[middle]>dest1){
54     end=middle-1;
55   }else{
56     head=middle+1;
57   }
58 }
59 if(flag1){
60   System.out.println("很遗憾,没有找到");
61 }

练习6:冒泡排序

 1 int[] arr=new int{43,32,76,25,-98,0,64,33,-21,32,99};
 2 for(int i=0;i<arr.length-1;i++){
 3   for(int j=0;j<arr.length-1-i;j++){
 4     if(arr[j]>arr[j+1]){
 5       int temp=arr[j];
 6       arr[j]=arr[j+1];
 7       arr[j+1]=temp;
 8     }
 9   }
10 }
11 for(int a:arr){
12   System.out.println(a+"t");
13 }

练习7:快速排序

 1 public class @R_126_1222@ {
 2     public static void main(String[] args) {
 3         int[] scores={5,8,2,1,9};
 4         //排序
 5         Arrays.sort(scores);
 6         for (int a:scores) {
 7             System.out.print(a+" ");
 8         }
 9         //查找
10 int i = Arrays.binarySeArch(scores, 8);
11         System.out.println(i);
12     }
13 }

3.数组中常见的异常:

  • 数组角标越界异常:ArraryIndexOutOfBoundsExetion

  • 空指针异常:NullPointerException

脚本宝典总结

以上是脚本宝典为你收集整理的数组全部内容,希望文章能够帮你解决数组所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。