我们可以在java中更改数组的大小吗?我很迷惑。每个人都知道数组:我们无法改变数组的大小。
但写完这段代码后我很困惑。
.data
pn: .string "input.bin"
string: .string "%f\n"
buf_size = 8
alloc = -(16+buf_size)&-16
dealloc = -alloc
buf_s = 16
.text
.balign 4
.global main
main: stp x29,x30,[sp,alloc]!
mov x29,sp
mov w0,-100
ldr x1,=pn
mov w2,0
mov w3,0
mov x8,56
svc 0
cmp w0,0
mov w19,w0
mov w24,w19
mov x20,0
mov x21,8
b.ge open_ok
open_ok:
mov w0,w19
add x1,x29,x21
mov x2,8
mov x8,63
svc 0
ldr d0,[x1]
ldr x0,=string
bl printf
add x21,x21,8
cmp x20,199
add x20,x20,1
b.lt open_ok
mov w0,w24
mov x8,57
svc 0
mov x1,x0
ldr x0,=string
bl printf
ldp x29,x30,[sp],dealloc
ret
如果我们无法更改数组的大小,那么我们应该在
处获得Runtime:ArrayIndexOutOfBoundsException错误class Test {
public static void main(String[] args) {
int[] array = {1,2,3,4,5,6,7,8,9,10,11};
int[] array1 = {1,1};
System.out.println("befor : " + array1.length); //I get 2
array1 = array;
System.out.println("intialize : "+array1.length); //I get 11
for(int a : array1) {
System.out.println(a);
}
System.out.println("after : " + array1.length);
}
}
但是输出为:
array1 = array;
答案 0 :(得分:0)
<强>数组1:强>
索引 - &GT;值
0-&gt;一种
1→乙
2→ç
3→d
4-&GT,E
数组1大小= 5
<强> ARRAY2:强>
索引 - &GT;值
0→X
1→; Y
数组2大小= 2
当我们谈论数组中的不变性时,你需要清楚背后的想法。
Array1 = Array2?
'='是赋值运算符。这意味着当您编写上面的行时,您决定完全替换array1。在此行之后,不会有任何Array1之前的参考。
“如果我们无法改变数组的大小,那么我们应该得到Runtime:ArrayIndexOutOfBoundsException错误”:你不会得到这个,因为你已经为Array1分配了新值。
Array1现在甚至不记得它在诞生期间由5个值组成。