[关闭]
@liruiyi962464 2017-03-20T11:19:40.000000Z 字数 3816 阅读 430

数组

java

数组的作用和类型

作用

  • 存储相同数据类型的一组数据
  • 对同类型数据集中存储、管理、便于遍历

数组类型

  • 数组的类型就是数组中存储的数据类型

要点

  • 数组中的所有元素必须属于相同的数据类型
  • 数组中所有的元素在内存中连续存储
  • 数组存储数据按照先后顺序存储,而且是从0开始

特点

  • 数组本身也是一种引用类型
  • 数组名只是引用,指向堆中创建的数组对象,该对象保存一组其他引用或直接值

初始化数组

数组的初始化

  • 为数组中的成员——赋值

数组赋值与操作的方式

  • 数组的长度 arr1.length
  1. //定义一个空数组 声明和定义 每一项的默认值均为0
  2. int[] arr1 = new int[4];
  3. //直接赋值法
  4. int[] arr2 = {4,5,6,7};
  5. //通过new关键字创建数组并且赋值
  6. int[] arr3 = new int[]{4,5,6,7,8};
  7. //类比 将int改变成其他任何类型那么数组就是对应类型的数组
  8. System.out.println(arr2[0]);//5
  9. System.out.println(arr2[1]);//4
  10. System.out.println(arr2[2]);//6
  11. System.out.println(arr2[3]);//7
  12. //数组存储数据按照先后顺序存储,而且是从0开始编号
  13. //求对应数组的长度=数组存储数据的个数
  14. System.out.println("arr1数组的长度为:"+arr1.length);//4
  15. System.out.println("arr2数组的长度为:"+arr2.length);//4
  16. System.out.println("arr3数组的长度为:"+arr3.length);//5
  17. //往第一个数组arr1里面添加数据
  18. Scanner sc =new Scanner(System.in);
  19. for(int i = 0; i<arr1.length;i++){
  20. System.out.print("请输入第"+(i+1)+"个同学的成绩:");
  21. //将控制台输入的内容存储到数组中
  22. arr1[i] = sc.nextInt();//数组中的每一项等价于一个int变量
  23. }
  24. //根据指定下标 修改对应的值;
  25. arr1[3]=99;
  26. for(int i = 0; i<arr1.length;i++){
  27. //根据下标网数组中去数据,下标从1开始编号
  28. System.out.print("第"+(i+1)+"个同学的成绩:"+arr1[i]+"\n");
  29. }
  30. System.out.print("第四个同学的成绩修改过"+(arr1[3]=99));
  31. System.out.println();

增加 删除 修改

  1. Scanner sc=new Scanner(System.in);
  2. int[] array=new int[]{4,9,11,8,29};
  3. System.out.println("遍历原数组:");
  4. for(int i=0;i<array.length;i++){
  5. System.out.println("下标为"+i+"对应的值为:"+array[i]);
  6. }
  7. System.out.print("请输入你要删除数据在数组中对应的下标:");
  8. int index=sc.nextInt();
  9. int[] delArray=new int[array.length-1];
  10. int[] insertArray=new int[array.length+1];
  11. //根据指定下标删除数据
  12. for(int i=0;i<array.length;i++){
  13. if(i<index){
  14. delArray[i]=array[i];
  15. }else if(i==index){
  16. continue;
  17. }else{
  18. delArray[i-1]=array[i];//把后面的往前移一位
  19. }
  20. }
  21. System.out.println("删除原数组中下标为:"+index+"之后遍历数组!!!");
  22. for(int i=0;i<delArray.length;i++){
  23. System.out.println(delArray[i]);
  24. }
  25. //根据下标往数组里面插入数据
  26. System.out.println("请输入你要插入的数据:");
  27. int insertNum=sc.nextInt();
  28. System.out.println("请输入你要插入的下标:");
  29. int step=sc.nextInt();
  30. //执行插入的操作
  31. for(int i=0;i<insertArray.length;i++){
  32. if(i<step){
  33. insertArray[i]=array[i];
  34. }else if(i==step){//2
  35. insertArray[i]=insertNum;
  36. }else{
  37. insertArray[i]=array[i-1]; //insetArray[3]=array[2]
  38. }
  39. }
  40. System.out.println("插入完成之后遍历数组:");
  41. for(int i=0;i<insertArray.length;i++){
  42. System.out.println(insertArray[i]);
  43. }

数组排序

冒泡排序

  1. int[] array = new int[]{43,9,15,55,6,1};
  2. System.out.println("未排序之前便利数组");
  3. for(int i=0;i<array.length;i++){
  4. System.out.println(array[i]);
  5. }
  6. //比较一次
  7. for(int i=0;i<array.length-1;i++){
  8. if(array[i]<array[i+1]){
  9. int temp = array[i];
  10. array[i] = array[i+1];
  11. array[i+1] = temp;
  12. }
  13. }
  14. //我们需要比较array.length-1次 顺序排序 从小到大
  15. for(int i=0;i<array.length-1;i++){
  16. for(int j=0;j<array.length-1-i;j++){
  17. if(array[j]<array[j+1]){
  18. int temp = array[j];
  19. array[j] = array[j+1];
  20. array[j+1] = temp;
  21. }
  22. }
  23. }
  24. //我们需要比较array.length-1次 逆序排序 从大到小
  25. for(int i=0;i<array.length-1;i++){
  26. for(int j=0;j<array.length-1-i;j++){
  27. if(array[j]>array[j+1]){
  28. int temp = array[j];
  29. array[j] = array[j+1];
  30. array[j+1] = temp;
  31. }
  32. }
  33. }
  34. System.out.println("使用冒泡排序之后便利数组");
  35. for(int i=0;i<array.length;i++){
  36. System.out.println(array[i]);
  37. }

选择排序

  1. //选择排序
  2. for(int i=0;i<array.length-1;i++){
  3. for(int j=i+1;j<array.length;j++){
  4. if(array[i]>array[j]){
  5. int temp = array[i];
  6. array[i] = array[j];
  7. array[j] = temp;
  8. }
  9. }
  10. }
  11. System.out.println("使用选择排序之后便利数组");
  12. for(int i=0;i<array.length;i++){
  13. System.out.println(array[i]);
  14. }

二维数组

  • 二维数组可以看成以数组为元素的数组
  • 声明和初始化按照高维到低维
  1. int[][] arrs = new int[3][];
  2. arrs[0] = new int[]{1,2,3};
  3. arrs[1] = new int[]{4,5,6,7};
  4. arrs[2] = new int[] {8,9};
  5. //遍历arrs[]这个数组
  6. //arrs.length二维数组有多少行返回的结果就是多少(能放一维数组的个数)
  7. for(int i=0;i<arrs.length;i++){
  8. for(int j=0;j<arrs[i].length;j++){
  9. System.out.print(arrs[i][j]+"\t");
  10. }
  11. System.out.println("");
  12. }
  13. int [][] array = new int[][]{{1,2,4,6},{6,7,12,6,7,},{3,4,5}};
  14. for(int i=0;i<array.length;i++){
  15. for(int j=0;j<array[i].length;j++){
  16. System.out.print(array[i][j]+"\t");
  17. }
  18. System.out.println("");
  19. }

排序

  1. int[] arr={1,6,3,5,10,9,7};
  2. for(int i=0;i<arr.length;i++){
  3. System.out.println(arr[i]);
  4. }
  5. //排序之后
  6. System.out.println("排序之后");
  7. Arrays.sort(arr);
  8. System.out.println("顺序排列");
  9. for(int i=0;i<arr.length;i++){
  10. System.out.println(arr[i]);
  11. }
  12. System.out.println("逆序排列");
  13. for(int i=arr.length-1;i>=0;i--){
  14. System.out.println(arr[i]);
  15. }
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注