美文网首页
JavaSE之数组

JavaSE之数组

作者: 伍陆柒_ | 来源:发表于2019-03-05 17:16 被阅读0次

    语法及元素访问

    public class ArrayDemo1 {
        public static void main(String[] args) {
            // 数据类型
            // 1.基本数据类型 : byte short int long float double char boolean
            // 2.引用数据类型:①类(String,Scanner,Random,Math..);②接口;③数组
            // 数组 :1.它能保存一组数据类型相同数据,我们把数组保存的数据称为元素,2.定长(固定长度)
            // 如何声明,创建一个数组
            int num = 1;
            // ①
            int arr[] = new int[5];// 5代表的是数组长度,运行过程中不可变的
            // 数组元素的访问--通过索引值(下标值,从0开始,所以长度为n的数组,下标值范围从0到n-1)
            System.out.println(arr[0]);
            System.out.println(arr[1]);
            System.out.println(arr[2]);
            System.out.println(arr[3]);
            System.out.println(arr[4]);
            // ArrayIndexOutOfBoundsException 数组越界异常
            System.out.println(arr[5]);
        }
    }
    
    public class ArrayDemo2 {
        public static void main(String[] args) {
            // new : 开辟堆内存的操作符
            int arr[] = new int[4];
            int arr1[] = new int[4];
            String str[] = new String[2];
            System.out.println(str[2]);
    //      System.out.println(arr[0]);
    //      arr[0] = 1.2;
    //      System.out.println(arr[0]);
    //      
    //      char arr1[] = new char[3];
    //      arr1[0] = 'a';
    //      
    //      String str[] = new String[2];
    //      str[0] = "hello";
    //      str[1] = "world";
            
            // 1.数组有默认值(整型0,浮点型0.0,字符型\u0000,布尔型false,字符串型null)
            // 2.长度必须指定
            // 3.new关键字
            int num = 100;
            System.out.println(num);
            System.out.println(arr[0]);
        }
    }
    

    一些错误方式

    public class ArrayDemo4 {
        public static void main(String[] args) {
            // 数组创建方式
            // 1. int arr1[] = new int[3];必须指定长度,默认保存3个0
            int arr1[] = new int[3];
            arr1[0] = 1;
            arr1[1] = 3;
            arr1[2] = 9;
            
            // 2. int arr2[] = new int[] {1,3,9};长度就是{}中元素的个数,直接赋值
            int arr2[] = new int[] {1,3,9};
            
            // 3. int arr3[] = {1,3,9}; 直接赋值
            int arr3[] = {1,3,9};
            
            /*
             * 注意:一些错误的声明方式
             *  int arr1[5] = new int[];
             *  int arr2[] = new int[3] {1,3,9};
             *  int arr3[3] = {1,3,9};
             */
        }
    }
    

    数组的遍历(重点)

    public class ArrayDemo5 {
        public static void main(String[] args) {
            // 数组的遍历 : 将数组当中元素,逐个取出来
            int arr[] = { 4, 7, 23, 5, 8, 9, 0, -5 };
            // 数组长度
            // System.out.println(arr.length);
            // 遍历
            for (int i = 0; i < arr.length; i++) {
                System.out.println(arr[i]);
            }
    
            String str[] = { "hello", "world", "你好", "大家好" };
            for (int i = 0; i < str.length; i++) {
                System.out.println(str[i]);
            }
        }
    }
    

    Foreach循环写法

    public class ForeachDemo {
        public static void main(String[] args) {
            // 增强for循环
            int arr[] = {1,345,678,890,32};
            
    //      for(int i = 0;i < arr.length;i++) {
    //          int num = arr[i];
    //          System.out.println(i+","+num);
    //      }
            
    //      int i = 0;
    //      for(int num : arr) {
    //          System.out.println(i+","+num);
    //          i++;
    //      }
        }
    }
    

    数组的排序(重点)

    public class Demo2 {
        public static void main(String[] args) {
            // 数组的排序
            int arr[] = {12,1,55,7,89,32};
            // 1.冒泡排序(必须)
            // 外层循环--一共比较多少轮
    //      for(int i = 1;i < arr.length;i++) {
    //          // 每一轮比较的次数与第几轮和数组长度有关
    //          for(int j = 0;j < arr.length - i;j++) {
    //              if(arr[j] > arr[j+1]) {
    //                  int temp;
    //                  temp = arr[j];
    //                  arr[j] = arr[j+1];
    //                  arr[j+1] = temp;
    //              }
    //          }
    //      }
    //      for(int num : arr) {
    //          System.out.print(num+" ");
    //      }
            
            // 2.选择排序(非必须)
            for(int i = 0;i < arr.length - 1;i++) {
                for(int j = i + 1;j < arr.length;j++) {
                    if(arr[i] > arr[j]) {
                        int temp;
                        temp = arr[i];
                        arr[i] = arr[j];
                        arr[j] = temp;
                    }
                }
            }
            for(int num : arr) {
                System.out.print(num+" ");
            }
        }
    }
    

    经典练习

    public class HomeWork5 {
        public static void main(String[] args) {
            // 在一个有8个整数(18,25,7,36,13,2,89,63)
            // 的数组中找出其中最大的数及其下标
            // 解题思路 : 
            int arr[] = {18,25,7,36,13,2,89,63};
            // 假设arr[0]是最大值
            int max = arr[0];
            // 最大值的下标0
            int index = 0;
            int i = 0;
            
            for(int num : arr) {
                if(num > max) {
                    max = num;
                    index = i;
                }
                i++;
            }
            System.out.println(index+","+max);
    
    //      for(int i = 0;i < arr.length;i++) {
    //          if(arr[i] > max) {
    //              max = arr[i];
    //              index = i;
    //          }
    //      }
    //      System.out.println(index+","+max);
        }
    }
    
    public class Practice3 {
        public static void main(String[] args) {
            // 模拟35选7 :生成7个不同的1-35之间的数字(只有一个循环,只涉及一个数组)
            boolean b[] = new boolean[35];// 35个false
            Random ran = new Random();
            for(int i = 0;i < 7;i++) {
                // 生成一个1-35之间的数字
                int num = ran.nextInt(35)+1;
                // 判断之前是否生成过,到b这个数组中检查下标值为num-1对应元素是true还是false来确认是否生成过
                if(b[num-1]) {
                    i--;
                }
                else {
                    // 表示生成过
                    b[num-1] = true;
                    System.out.print(num+" ");
                }
            }
        }
    }
    

    非重点

    二维数组的创建

    public class ArrayDemo6 {
        public static void main(String[] args) {
            // 二维数组:数组当中存数组
            // int arr[] = new int[3];
            // {{1,4,9,11},{20,211},{9}}
            int arr[][] = new int[3][];//前面的括号代表长度,后面的无影响
            
            arr[0] = new int[4];
            arr[0][0] = 1;
            arr[0][1] = 4;
            arr[0][2] = 9;
            arr[0][3] = 11;
                    
            arr[1] = new int[2];
            arr[1][0] = 20;
            arr[1][1] = 211;
            
            arr[2] = new int[1];
            arr[2][0] = 9;
    
            System.out.println(arr[0][1]);
                    
            // int arr[] = new int[]{1,2,3};
    //      int arr[][] = new int[][] {{1,2,3},{2},{3,4,5}};
            
            
            
            // int arr1[] = {1,2,3,5,6};
    //      int arr1[] = {1,2,3,5,6};
    //      int arr2[][] = {
    //                  {1,2,3},
    //                  {4,5},
    //                  {1,567,98,78,123,345},
    //                  {0}
    //              };
    //      System.out.println(arr2.length);// 4
    //      System.out.println(arr2);
    //      System.out.println(arr2[0]);
    //      System.out.println(arr2[0][0]);
        }
    }
    

    二维数组的遍历

    public class Demo1 {
        public static void main(String[] args) {
            // 1.3种创建方式
            int[][] arr1 = new int[3][];
            arr1[0] = new int[3];
            arr1[0][0] = 10;
            arr1[0][1] = 11;
            arr1[0][2] = 12;
            
            arr1[1] = new int[1];
            arr1[1][0] = 20;
            
            arr1[2] = new int[2];
            arr1[2][0] = 30;
            arr1[2][1] = 31;
            
    //      int arr2[][] = new int[][] {{10,11,12},{20},{30,31}};
    //      int []arr3[] = {{10,11,12},{20},{30,31}};
            // 2.二维数组的遍历
            for(int i = 0;i < arr1.length;i++) {
                for(int j = 0;j < arr1[i].length;j++) {
                    System.out.print(arr1[i][j]+" ");
                }
                System.out.println();
            }
        }
    }
    

    快速排序和数组拷贝

    public class Demo3 {
        public static void main(String[] args) {
            // 快速排序
    //      int arr[] = {12,1,55,7,89,32};
    //      Arrays.sort(arr);
    //      for(int num : arr) {
    //          System.out.print(num+" ");
    //      }
            
            // 数组复制
            int arr1[] = {1,2,3,4,5};
            int arr2[] = {6,7,8,9,10,11,12,13,14,15};
            System.arraycopy(arr1, 0, arr2, 4, 2);
            for(int num : arr2) {
                System.out.print(num+" ");
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:JavaSE之数组

          本文链接:https://www.haomeiwen.com/subject/epuouqtx.html