御笔剑客 发表于 2018-2-22 15:06:06

关于java引用的问题

import java.util.Scanner;
import java.lang.Math;
public class bug {
        public static void main(String[] args) {
                int[] num1 ={1,2,3,4,5};
                int[] num2=num;
                for(int i=0;i<5;i++) {
                        System.out.println("num1:"+num1);
                        num2++;
                        System.out.println("num2:"+num2);
                }
        }
}

为什么对num2进行自增的操作时不会影响到num1的值呢?
num1和num2的地址不是相同的吗?

alltolove 发表于 2018-2-22 16:04:54

是不是最近java更新优化了把这个

cidyychen 发表于 2018-2-22 16:22:06

本帖最后由 cidyychen 于 2018-2-22 16:27 编辑

已经产生了影响,但是你遍历的时候还是在产生影响前,只要再遍历一次num1就可以看出来,实际上num2就是改变后的结果。

光宇 发表于 2018-3-15 11:12:42

int[] num1 ={1,2,3,4,5};
//在方法堆中开辟一块空间存储数值,生成地址,将地址赋值给num1;
int[] num2=num1;
//在方法堆中开辟一块空间,将num1地址所指向的数据存储进去,并生成地址,赋值给num2;
数组这种引用类型,每声明一个,都会在方法堆中开辟一块新空间,哪怕二者存储的数据一样,并生成一个新的地址。
页: [1]
查看完整版本: 关于java引用的问题