数据创建语法

  1. 数据类型[] 变量名 = new 数据类型[长度];

用数组创建的对象与用类创建的对象的区别

对象的创建方式 对象中的元素个数 元素的数据类型 元素的访问方式 是否支持使用循环来遍历访问元素 元素是否有零值 对象存储的位置
使用类创建 由成员变量的个数决定 可以在类中自定义 使用对象名.成员变量名 否 (元素没有索引号) 堆区
使用数组创建 由数组的长度决定 所有元素是同一种类型 使用数组名[索引号] 是 (因为每个元素有索引号, 从0开始) 堆区

基本数据类型数组和引用类型数组

  • 基本数据类型的数组有8个
  1. byte[]
  2. short[]
  3. int[]
  4. long[]
  5. float[]
  6. double[]
  7. boolean[]
  8. char[]
  • 引用数据类型的数组 (使用类创建的数组)
    • 使用类可以造对象, 一个对象可以存储一行数据
    • 使用类可以造数组, 一个数组可以存储多个对象, 称为对象数组, 可以存储一个二维表结构的数据

**

一个普通Java对象 存储一行数据
一个基本类型数组 存储一列数据
一个引用类型数组 存储一张二维表

数组使用常见错误

错误一: 访问未初始化/未开辟内存空间的数组

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. int[] array;
  4. // 数组未初始化之前不能访问数组中的元素
  5. array[0] = 10;
  6. }
  7. }

错误二: 初始化数组未指定长度

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. //int[] array = new int[]; // 错误: 初始化数组的时候必须指定数组的长度
  4. // 初始化数组, 并分配长度为10的内存空间
  5. int[] array = new int[10]; // 初始化数组的时候必须指定数组的长度
  6. }
  7. }

错误三: 数组下标越界

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. // 初始化数组, 并分配长度为10的内存空间
  4. int[] array = new int[10]; // 初始化数组的时候必须指定数组的长度
  5. // array[-1] = 10;
  6. // array[10] = 10;
  7. }
  8. }

创建数组的四种方式

  1. public class Demo02 {
  2. public static void main(String[] args) {
  3. // 方式1:1. 在栈区声明数组变量 2. 在堆区开辟数组内存空间 (两行代码)
  4. int[] array;
  5. array = new int[10];
  6. // 方式2:1. 在栈区声明数组变量 2. 在堆区开辟数组内存空间 (一行代码)
  7. int[] array2 = new int[10];
  8. // 方式3:1. 在栈区声明数组变量 2. 在堆区开辟数组内存空间 3. 在数组对象中的每个索引中存入数据
  9. int[] array3 = new int[]{10,20,30,40,50};
  10. // 方式4是方式3的简化版:1. 在栈区声明数组变量 2. 在堆区开辟数组内存空间 3. 在数组对象中的每个索引中存入数据
  11. int[] array4 = {10,20,30,40,50};
  12. }
  13. }

遍历数组的三种方式

  1. public class Demo03 {
  2. public static void main(String[] args) {
  3. int[] array = {10,20,30,40,50};
  4. System.out.println("正序遍历");
  5. for (int i = 0; i < array.length; i++) {
  6. System.out.println(array[i]);
  7. }
  8. System.out.println("倒序遍历");
  9. for (int i = array.length - 1; i >= 0; i--) {
  10. System.out.println(array[i]);
  11. }
  12. System.out.println("增强型for循环");
  13. // 优点: 语法最简单 // 缺点: 循环中没有索引号
  14. for (int e : array) {
  15. System.out.println(e);
  16. }
  17. }
  18. }