跳至主要內容

数组

Emilia Zhen大约 2 分钟Java

静态初始化数组

int[] scoreList = {95,85,79,99,100};
// 完整格式
int[] scoreList = new int[]{95,85,79,99,100};
String[] nameList = {'小红','张三','李四', '王五','六麻子'};
// 完整格式
String[] scoreList = new String[]{'小红','张三','李四', '王五','六麻子'};

数组在计算机中存储的基本原理

数组变量名中存储的是数组在内存中的地址,数组是一种引用数据类型

int[] ages = [12,24,18]

         ┌─────────────────► [I@4c873330
         │                  ┌────┬────┬────┐
 ages ───┘                  │ 12 │ 24 │ 18 │
┌─────────────┐             └────┴────┴────┘
│ [I@4c873330 │                0    1    2
└─────────────┘           内存

数组访问

获取数组对应索引的值

int[] arr1 = {12,24,18};
arr1[0];
// 12

获取数组长度

arr1.length;
// 3

动态初始化数组

定义数组时先不存入具体的元素值,只确定数组存储的数据类型和数组的长度

int[] arr = new int[3];
arr[0] = 10
// 10,0,0

注意

静态初始化和动态初始化数组的写法是独立的,不可以混用
❌ int[] arr = new int[3]{10,11,12};

数组默认值

数据类型明细默认值
基本类型byte、short、char、int、long0
float、double0.0
booleanfalse
引用类型类、接口、数组、Stringnull

数组在计算机中执行原理

Java 内存分配介绍

  • 方法区
    字节码文件先加载到这里

  • new 出来的对象会在这块内存中开辟空间并产生地址

  • 方法运行时所进入的内存变量在栈内存里
  • 本地方法栈
  • 寄存器

数组反转

public class TestReverse {
  public static void main(String []args) {
    int[] arr = {245,123,32,566,22,1,88,55,90};
    for(int i = 0, j = arr.length - 1; i < j ; i++, j--){
      int tmp = arr[i];
      arr[i] = arr[j];
      arr[j] = tmp;
    }
  }
}