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