• 基本数据类型赋值,赋值方式为值拷贝
  • 数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值

    1. public class Main {
    2. public static void main(String[] args) {
    3. //基本数据类型赋值,赋值方式为值拷贝
    4. //n2变化不会影响n1的值
    5. int n1 = 10;
    6. int n2 = n1;
    7. n2 = 80;
    8. System.out.println("n1 = " + n1);
    9. System.out.println("n2 = " + n2);
    10. //数组在默认情况下是引用传递,赋的值是地址,赋值方式为引用赋值
    11. //arr2的变化会影响arr1,arr1和arr2指向相同的地址空间
    12. int[] arr1 = {1,2,3};//静态初始化数组
    13. int[] arr2 = arr1;//把arr1赋给arr2
    14. arr2[0] = 10;
    15. //看arr1的元素
    16. System.out.println("=====arr1的元素=====");
    17. for(int i = 0; i < arr1.length; i++){
    18. System.out.println(arr1[i]);
    19. }
    20. }
    21. }

    运行结果:
    image.png

数组拷贝

  1. public class Main {
  2. public static void main(String[] args) {
  3. //将数组arr1拷贝到数组arr2,要求数据空间独立
  4. int[] arr1 = {1,2,3};//静态初始化数组
  5. //创建一个新的数组arr2,开辟新的数据空间,大小arr1.length
  6. int[] arr2 = new int[arr1.length];
  7. //遍历arr1,把每个元素拷贝到arr2对应的元素位置
  8. for(int i = 0; i < arr1.length; i++){
  9. arr2[i] = arr1[i];
  10. }
  11. //改变arr2的元素
  12. arr2[0] = 100;
  13. //看arr2的元素
  14. System.out.println("=====arr1的元素=====");
  15. for(int i = 0; i < arr1.length; i++){
  16. System.out.println(arr1[i]);
  17. }
  18. //看arr2的元素
  19. System.out.println("=====arr2的元素=====");
  20. for(int i = 0; i < arr2.length; i++){
  21. System.out.println(arr2[i]);
  22. }
  23. }
  24. }

运行结果:
image.png