数组字面量是用方括号[]直接写出元素值来声明并初始化数组的方式,简洁直观、一次性完成声明与赋值,支持混合类型,是javascript中最常用的数组创建方法。

数组字面量就是用一对方括号 [] 直接写出元素值来声明并初始化数组,写法简洁、直观,是日常编码中最常用的方式。
什么是数组字面量
数组字面量指在声明变量的同时,用 {}(Java/C#)或 [](JavaScript/Go)包裹一组具体值,让编译器或解释器自动推断类型和长度。它本质是一次性完成声明、内存分配和赋值三件事。
- Java 中:
int[] nums = {1, 2, 3};等价于int[] nums = new int[]{1, 2, 3}; - Go 中:
nums := []int{1, 2, 3}(注意方括号在类型前,且无长度数字) - C/C++ 中:
int arr[] = {1, 2, 3};或int arr[3] = {1, 2, 3}; - JavaScript 中:
const arr = [1, "hello", true];(支持混合类型)
字面量写法的关键细节
看似简单,但几个细节容易出错:
-
必须与声明写在同一语句中:Java 不允许
int[] a; a = {1,2,3};,会编译报错;必须写成int[] a = {1,2,3};或用new形式拆开 -
长度由元素个数决定:
String[] names = {"Alice", "Bob"};创建的是长度为 2 的数组,不能后续扩容 -
支持索引指定初始化(部分语言):如 Go 或 Java 不直接支持,但 C 风格语法中可写
int arr[5] = {[0]=1, [2]=3};,未指定位置填零值 -
空数组写法明确:Java 写
new int[0]或new int[]{};Go 写[]int{};JavaScript 写[]
什么时候优先用字面量
适合场景清晰,用对了能少写代码、提高可读性:
- 初始数据已知且固定,比如配置项、状态枚举、测试用例数据
- 函数调用时传入临时数组,如
Arrays.asList(new String[]{"a","b","c"})中的new String[]{"a","b","c"} - 声明即使用,无需后续修改长度——因为所有字面量创建的都是一维静态数组,长度不可变
- 配合 IDE 自动补全,输入
{后常能快速生成模板,比new int[...]更快
注意和“动态数组”的区别
字面量创建的是**固定长度数组**,不是 ArrayList、Slice 或 Vector 这类动态结构:
- Java 的
int[]是基础数组,ArrayList<integer></integer>才是可变容器 - Go 的
[]int是 slice(底层引用底层数组),长度可变;而[3]int是真正固定长度的数组,字面量[3]int{1,2,3}属于后者 - 别把 JavaScript 的
[]当作传统数组——它本质是对象,支持动态增删,和 Java/C 的数组概念不同











