黑马程序员JAVA基础-数组以及一些基本操作

来源:互联网 发布:重庆那可以学美工 编辑:程序博客网 时间:2024/06/11 04:28

------- android培训、java培训、期待与您交流! ----------

 

 

数组
 (1)同一种类型数据的集合。其实数组就是一个容器。
  A:只要是容器,就得重点掌握。
 (2)数组的好处
  A:可以自动给数组中的元素从0开始编号,方便操作这些元素。
 (3)数组的定义格式
  A:当不明确数组中的元素时
   **举例 int[] arr = new int[3];
  B:当明确数组中的元素时
   **举例 int[] arr = new int[]{1,2,3,4,5};
       arr = {1,2,3,4,5};

 

操作数组最常见的问题
  A:当你访问到数组中的最后一个元素时,还想继续访问,这个时候,会发生角标越界异常。
   **ArrayIndexOutOfBoundsException
   **举例 int[] arr = new int[3];
          System.out.println(arr[3]);
  B:当数组不在指向某个实体时,你还继续访问,就会发生空指针异常。
   **NullPointerException
   **举例 int[] arr = new int[3];
          arr = null;
          System.out.println(arr[1]);

 

常见的数组的操作
  记住:对数组的操作,一定要从角标下手。
  A:遍历操作
   **数组的属性:length 数组的长度。
   **格式:数组名.length
  for (int x=0;x < arr.length ;x++ ){
   System.out.println("arr["+x+"]="+ arr[x]);
  }
  B:获取最值
   **获取最大值
   public static int getMax(int[] arr){
    int max = arr[0];
    
    //i从1开始,因为第一个数不用跟自己比
    for(int x=1; x<arr.length; x++) {
     if(arr[x]>max) {
      max = arr[x];
     }
    }

    return max;
   }

   **获取最小值
   public static int getMin(int[] arr) {
    int min = arr[0];
    
    //i从1开始,因为第一个数不用跟自己比
    for(int i=1; i<arr.length; i++) {
     if(arr[i]<min){
      min = arr[i];
     }
    }

    return min;
   }
  C:排序
   **选择排序
   原理:如果拿0角标上的元素依次和后面的元素进行比较,
                       第一次内循环结束后,最小值出现在了0角标位置。
   
   你就想想我们是如何打星星
   ****
   ***
   **
   *
   
   public static void selectSort(int[] arr){
    //i<arr.length-1 n个数两两比,n-1次就能获得最值。
    for(int i=0; i<arr.length-1; i++){
     //0角标元素没必要和自己比,所以j从1开始。
     //发现j为了不重复比较,总是要比i大1,所以j从i+1开始
     for(int j=i+1; j<arr.length; j++){
      if(arr[j]<arr[i]){
       int temp = arr[i];
       arr[i] = arr[j];
       arr[j] = temp;
      }
     }
    }
   }

   **冒泡排序
   原理:两个相邻元素进行比较,第一次比较完以后,最大值出现在了最大角标处。

   public static void bubbleSort(int[] arr){
    //i<arr.length-1 n个数两两比,n-1次就能获得最值。
    for(int i=0; i<arr.length-1; i++){
     //为了防止角标越界,j<arr.length-1
     //为了减少比较次数,j<arr.length-1-i
     for(int j=0; j<arr.length-1-i; j++){
      if(arr[j]>arr[j+1]){
       int temp = arr[j];
       arr[j] = arr[j+1];
       arr[j+1] = temp;
      }
     }
    }
   }
  D:传递参数
   **调用的时候,传递是基本类型的值的时候,形参改变对实参没有任何影响。
   **调用的时候,传递是引用类型的地址的时候,形参改变对实参有直接影响。