按值确认Java复制

时间:2019-01-05 19:17:33

标签: java

执行有关变量放置并确认副本的问题。

@org.junit.Test
public void question() {
    int c[] = new int[]{0};
    /*Questions:
     * 1.) Is j in the stack?
     * 2.) When assigning j, is a copy of the value c[0] performed?*/
    int j = c[0];
}

3 个答案:

答案 0 :(得分:3)

Java仅复制值。有时,这些值是对对象的引用,但此处的值是int原语。 j的值在栈中,因为它是一个局部变量(c的值也是如此,它是对本身位于堆上但不久将被垃圾回收的数组的引用)。

答案 1 :(得分:1)

是的,由于int是原始类型,所以将c[0]的结果复制到j变量中,并按值复制。如果要使用Integer类,则将复制引用而不是值本身。

答案 2 :(得分:1)

Java总是按值传递。这意味着当X = Y时,X获得Y的值。如果是像int这样的图元,则将值复制,因为图元可直接用作值。如果是对象,则对象的引用将被复制,因为对象只能通过引用获得。