package com.loveCoding.j20250607_method;

/**
 * @author WanJl
 * @version 1.0
 * @title T5
 * @description 5.编写一个遍历数组的方法。思考是否要有参数，参数类型是什么，是否要有返回值，如果有返回值类型是什么。
 * @create 2025/6/7
 */
public class Demo04 {
    //5.编写一个遍历数组的方法。思考是否要有参数，参数类型是什么，是否要有返回值，如果有返回值类型是什么。



    public static void method(int a){
        a=a+100;
    }

    public static void method2(int[] arr){
        //arr=new int[]{15,3};
        arr[0]=15;
        arr[1]=666;
        arr[2]=7777;
    }
    public static void foreachArray(int[] arr){
        for (int i = 0; i < arr.length; i++) {
            System.out.print(arr[i]+"\t");
        }
    }

    public static void main(String[] args) {


        /*
            调用方法前定义的基本数据类型变量，调用方法时传入方法。无论做任何操作，都不影响外部定义的变量。
            因为i调用方法时传递是【基本数据类型】的副本，不影响原始值。这种传递参数的方式叫“值传递”
         */
        int a=1;
        System.out.println(a);
        method(a);
        System.out.println(a);


        //引用数据类型传递作为参数的时候，也是【值传递】
        //也是将实参的副本传递进方法。但是引用数据类型的值是堆内存的地址。
        //所以复制的副本，其实也是一个地址。两个地址访问的其实是同一个堆内存的位置。
        //所以，一个进行了修改，另一个也会受到影响。

        int[] arr={1,3,4,5,7,8,9,6,21};
        foreachArray(arr);  //1,3,4,5,7,8,9,6,21
        method2(arr);
        System.out.println();
        foreachArray(arr);//15,3,4,5,7,8,9,6,21


    }
}
