深入浅出之数组


简单概念

  • 数组的定义:用来存储数据的,具有数据类型一致,长度固定的特点。
  • 数组的特点:长度固定,类型一致,查找快、增删慢。

    数组的三种定义方式

  • 第一种:数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
  public class ArrayDemo {
      public static void test(int[] arr){
          System.out.println(Arrays.toString(arr));
      }
      public static void main(String[] args) {
          // 数组存储的数据类型[] 数组名字 = new 数组存储的数据类型[长度];
          int[] arr = new int[3];
          // 赋值
          for (int i = 0; i < 3; i++) {
              arr[i]=(i+1)*100;
          }
          test(arr);
      }
  }
  • 第二种:数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3…};
  // 数据类型[] 数组名 = new 数据类型[]{元素1,元素2,元素3...};
  String[] strArray = new String[]{"七夕","情人节","快乐"};
  • 第三种:数据类型[] 数组名 =数据类型[] 数组名 = {元素1,元素2,元素3…};
// 方式3
char[] charArray = {'A','B','C','D'};
System.out.println(Arrays.toString(charArray));

boolean[] barr= {false,false,true,true};
System.out.println(Arrays.toString(barr));

数组的遍历方式

  • for循环
  String[] strArray = new String[]{"七夕","情人节","快乐"};
  for (int i = 0; i < strArray.length; i++) {
      System.out.println(strArray[i]);
  }
  • 增强 For循环:本质就是for循环,可以查看代码编译后的结果
String[] strArray = new String[]{"七夕","情人节","快乐"};
for (String s : strArray) {
    System.out.println(s);
}
  • lambda 表达式 方式1 :请注意,该种方法不适用于基本数据类型
  // forEach
  default void forEach(Consumer<? super T> action) {
          Objects.requireNonNull(action);
          for (T t : this) {
              action.accept(t);
          }
  }
  //lambda 表达式
  Arrays.asList(strArray).forEach(str-> System.out.println(str));
  • lambda 表达式 方式2-升级版 :请注意,该种方法不适用于基本数据类型
// lambda 升级版
Arrays.asList(strArray).forEach(System.out::println);
  • 基本数据类型请使用这种方式遍历
  // arr 为基本数据类型:那8种啊 
  System.out.println(Arrays.toString(arr));

数组操作的之两种异常

  • 空指针异常: 下面程序中, arr=null; 强行切断arr与数组 {8, 3, 2, 4, 4, 5, 6, 9, 10, 12};的联系,此时arr数组为初始状态,为进行赋值,是不可以直接拿来用的,导致了arr了空指针异常

    /**
     * @author qfmx
     */
    public class ArrayDemo2 {
        public static void main(String[] args) {
            int[] arr = {8, 3, 2, 4, 4, 5, 6, 9, 10, 12};
            arr=null;
            // 空指针异常
            System.out.println(arr[0]);
        }
    }
  • 下标越界异常: java.lang.ArrayIndexOutOfBoundsException

/**
 * @author qfmx
 */
public class ArrayDemo2 {
    public static void main(String[] args) {
        int[] arr = {8, 3, 2, 4, 4, 5, 6, 9, 10, 12};
        // 下标越界
        System.out.println(arr[20]);
    }
}

数组中的简单操作

  • 排序-快速排序:从小到大
  package cn.allms.base.arr;

  import java.util.Arrays;

  /**
   * @author qfmx
   */
  public class ArrayDemo2 {
      /**
       * 快速排序
       * @param arr 戴排序数组
       */
      public static void quickSort(int[] arr){
          Arrays.sort(arr);
          System.out.println(Arrays.toString(arr));
      }

      public static void main(String[] args) {
          int[] arr = {8, 3, 2, 4, 4, 5, 6, 9, 10, 12};
          // 快速排序
          quickSort(arr);
      }
  }

文章作者: xyj
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 xyj !
评论
  目录