概念

  • 多个相同类型数据按照一定顺序排列的集合,并使用一个名字命名,按索引进行管理。
  • 数组由数组名、下标(索引)、数据、长度组成。
  • 数组本身是引用数据类型,而数组中的元素可以是任何数据类型,包括基本数据类型和引用数据类型。
  • 创建数组对象会在内存中开辟一整块连续的空间,数组名引用的是这块连续空间的首地址
  • 数组的长度一旦确定,就不能修改。
  • 可以通过下标(索引)的方式调用指定位置的元素,速度很快。

    一维数组

  1. 一维数组的声明和初始化
    1. int[] arr; // 声明
    2. new int[]{1,2,3,4,5}; //静态初始化
    3. new int[5]; // 动态初始化
    4. int[] arr = new int[5];
    5. int[] arr = {1,2,3,4,5}
  2. 如何调用数组的指定位置的元素
    1. arr[0] = "hello";
  3. 如何获取数组的长度
    1. arr.length // 5
  4. 如何遍历数组
    1. for(int i=0; i<arr.length; ++i}{arr[i];}
    2. for(
  5. 数组元素的默认初始化值
    1. int[] -> 0
    2. float[] -> 0.0
    3. char[] -> '\u000'
    4. String[] -> null
  6. 数组的内存解析
    1. 数组在初始化大小后会开辟一个连续的空间,进行存储数据

arr1 = arr2时,arr1和arr2使用的是同一个空间,是浅拷贝

数组中常见的异常

  1. Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException:
  2. Index 30 out of bounds for length 20
  3. 异常的线程 "main" java语言.数组下标(索引)越界异常:
  4. 索引30超出了长度20的边界
  5. 未定义数组

数组中的类型自动转换

  1. public class test3 {
  2. public static void main(String[] args) {
  3. // 类型自动转换也会发生在数组中
  4. //********test1**************
  5. byte i = 1;
  6. short j = 2;
  7. char z = 'a';
  8. int x = 5;
  9. int[] arr1 = new int[]{i, j, z, x};
  10. for(int item: arr1) System.out.print(item + " ");
  11. System.out.println();
  12. //********test2**************
  13. double d = 0.55;
  14. float f = 0.1f;
  15. double[] arr2 = new double[]{i, j, z, x, d, f};
  16. for(double item: arr2) System.out.print(item + " ");
  17. System.out.println();
  18. //********test3**************
  19. String s = "AAA";
  20. // 异常int无法转换成String类型
  21. // String[] arr3 = new String[]{i, j, z, x, d, f, s};
  22. // for(String item: arr3)
  23. // System.out.print(item + " ");
  24. }
  25. }