运算符:数组
编辑运算符:数组编辑
数组初始化编辑
使用 数组初始化运算符 '[] {}'
在堆上分配一个具有预定义元素集的一维 数组类型 实例。用于初始化数组类型实例中元素的每个值在插入时都会被强制转换为指定元素类型的值。指定值的顺序将被保留。
错误
- 如果一个值不能转换为指定类型的值。
语法
array_initialization: 'new' TYPE '[' ']' '{' expression_list '}' | 'new' TYPE '[' ']' '{' '}'; expression_list: expression (',' expression);
示例
-
使用静态值初始化数组。
-
使用非静态值初始化数组。
int i = 1; long l = 2L; float f = 3.0F; double d = 4.0; String s = "5"; def array = new def[] {i, l, f*d, s};
声明
int i
; 将int 1
存储到i
中声明
long l
; 将long 2
存储到l
中声明
float f
; 将float 3.0
存储到f
中声明
double d
; 将double 4.0
存储到d
中声明
String s
; 将String "5"
存储到s
中声明
def array
; 分配1-d def 数组
实例,长度为[4]
→1-d def 数组引用
; 从i
加载 →int 1
; 隐式转换int 1
为def
→def
; 将def
存储到1-d def 数组引用
的索引 [0]
中; 从l
加载 →long 2
; 隐式转换long 2
为def
→def
; 将def
存储到1-d def 数组引用
的索引 [1]
中; 从f
加载 →float 3.0
; 从d
加载 →double 4.0
; 提升float 3.0
和double 4.0
: 结果double
; 隐式转换float 3.0
为double 3.0
→double 3.0
; 将double 3.0
和double 4.0
相乘 →double 12.0
; 隐式转换double 12.0
为def
→def
; 将def
存储到1-d def 数组引用
的索引 [2]
中; 从s
加载 →String "5"
; 隐式转换String "5"
为def
→def
; 将def
存储到1-d def 数组引用
的索引 [3]
中; 隐式转换1-d int 数组引用
为def
→def
; 将def
存储到array
中
数组访问编辑
使用 数组访问运算符 '[]'
将值存储到 数组类型 值中或从其中加载值。数组类型值的每个元素都使用一个 int
类型的值来访问,以指定要存储/加载的索引。数组中可访问元素的范围为 [0, size)
,其中 size 是分配时指定的元素数量。使用负 int
类型的值作为索引,以从数组类型值的末尾反向访问元素,范围为 [-size, -1]
。
错误
- 如果提供的值不是
int
类型的值,或者不能转换为int
类型的值,则将其作为索引。 - 如果访问的元素超出了有效范围。
语法
brace_access: '[' expression ']'
示例
-
使用一维数组进行数组访问。
声明
int[] x
; 分配1-d int 数组
实例,长度为[2]
→1-d int 数组引用
; 将1-d int 数组引用
存储到x
中从
x
加载 →1-d int 数组引用
; 将int 2
存储到1-d int 数组引用
的索引 [0]
中;从
x
加载 →1-d int 数组引用
; 将int 5
存储到1-d int 数组引用
的索引 [1]
中;声明
int y
; 从x
加载 →1-d int 数组引用
; 从1-d int 数组引用
的索引 [0]
加载 →int 2
; 从x
加载 →1-d int 数组引用
; 从1-d int 数组引用
的索引 [1]
加载 →int 5
; 将int 2
和int 5
相加 →int 7
; 将int 7
存储到y
中声明
int z
; 将int 1
存储到z
中;声明
int i
; 从x
加载 →1-d int 数组引用
; 从z
加载 →int 1
; 从1-d int 数组引用
的索引 [1]
加载 →int 5
; 将int 5
存储到i
中; -
使用
def
类型进行数组访问。声明
def d
; 分配1-d int 数组
实例,长度为[2]
→1-d int 数组引用
; 隐式转换1-d int 数组引用
为def
→def
; 将def
存储到d
中从
d
加载 →def
隐式转换def
为1-d int 数组引用
→1-d int 数组引用
; 将int 2
存储到1-d int 数组引用
的索引 [0]
中;从
d
加载 →def
隐式转换def
为1-d int 数组引用
→1-d int 数组引用
; 将int 5
存储到1-d int 数组引用
的索引 [1]
中;声明
int x
; 从d
加载 →def
隐式转换def
为1-d int 数组引用
→1-d int 数组引用
; 从1-d int 数组引用
的索引 [0]
加载 →int 2
; 从d
加载 →def
隐式转换def
为1-d int 数组引用
→1-d int 数组引用
; 从1-d int 数组引用
的索引 [1]
加载 →int 5
; 将int 2
和int 5
相加 →int 7
; 隐式转换int 7
为def
→def
; 将def
存储到x
中声明
def y
; 隐式转换int 1
为def
→def
; 将def
存储到y
中;声明
int i
; 从d
加载 →def
隐式转换def
为1-d int 数组引用
→1-d int 数组引用
; 从y
加载 →def
; 隐式转换def
为int 1
→int 1
; 从1-d int 数组引用
的索引 [1]
加载 →int 5
; 隐式转换int 5
为def
; 将def
存储到z
中; -
使用多维数组进行数组访问。
数组长度编辑
数组类型值包含一个名为 length
的只读成员字段。 length
字段以 int
类型的值存储数组的大小,其中 size 是分配时指定的元素数量。使用 字段访问运算符 从数组类型值中加载 length
字段。
示例
新建数组编辑
使用 new [] 运算符
在堆上分配数组类型实例。在 new
标记后指定元素类型。使用 [
和 ]
标记指定每个维度,并在每个 [
和 ]
标记之间使用 int
类型的值指定每个维度的尺寸。
错误
- 如果为维度的尺寸指定的值不是
int
类型的值,或者不能转换为int
类型的值。
语法
new_array: 'new' TYPE ('[' expression ']')+;
示例
-
不同数组类型的分配。
声明
int[] x
; 使用length [5]
分配1-d int 数组
实例 →1-d int 数组引用
; 将1-d int 数组引用
存储到x
中使用
length [10]
分配1-d int 数组
实例 →1-d int 数组引用
; 将1-d int 数组引用
存储到x
中声明
int y
; 将int 2
存储到y
中;声明
def z
; 从y
加载 →int 2 @0
; 从y
加载 →int 2 @1
; 将int 2 @1
乘以int 2 @2
→int 4
; 使用长度[2, 4]
分配2-d int 数组
实例 →2-d int 数组引用
; 将2-d int 数组引用
隐式转换为def
→def
; 将def
存储到z
中;