我们可以在java中更改数组的大小

时间:2017-12-05 20:51:11

标签: java arrays

我们可以在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;

1 个答案:

答案 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个值组成。