Daily coding

Java Basic : day 6 - 메소드(함수) : Function2 본문

Language/Java_basic

Java Basic : day 6 - 메소드(함수) : Function2

sunnnkim 2019. 11. 26. 10:00

함수(메소드) 메소드(함수) : Function2

자료형 함수면(매개변수) { 
            처리
            리턴값
  }
  - 함수자료형, 매개변수에 배열값을 받을 수 있음
 
 
 */

// 배열은 참조변수
int arrNum[]= new int[1];
int num;

arrNum[0] = 11;
num = 11;
           
func(num, arrNum);
System.out.println("num = " + num);
System.out.println("arrNum[0] = " + arrNum[0]);


           // 안에 매개변수로 배열 자체가 넘어가서 배열의 값이 바뀐것임
           // 다른 기본 데이터형은 데이터 자체가 넘어가서 처리가 이루어지지만
           // 참조형이나 배열은 주소값이 넘어가서(포인터) 통째로 파라미터에 들어가게됨
           // 그리고 실제로 배열에 담긴 값들이 모두 다 변경됨.
           // 아래는 예시

 

int aNumber[] = { 2,4,6,8,10};
System.out.println("변경전 배열 데이터 : " + Arrays.toString(aNumber));
arrDiv2(aNumber);
System.out.println("변경후 배열 데이터 : " + Arrays.toString(aNumber));

int a = 1;
int b = 2;
System.out.println("변경전 a = " + a +", b = "+b);
swap(a, b); // 함수 안에서 처리 
System.out.println("변경후 a = " + a +", b = "+b);
// 위의 코드는 매개변수로 들어간 값이 기본 데이터이기 때문에 바뀌지 않음

int arr[] = new int[2];
arr[0] = 1;
arr[1] = 2;

System.out.println("변경전 arr[0] = " + arr[0] +", arr[1] = "+arr[1]);
swapArr(arr); // 함수 안에서 처리 
System.out.println("변경후 arr[0] = " + arr[0] +", arr[1] = "+arr[1]);

// 위의 코드는 매개변수로 들어간 값이 배열의 주소이기 때문에
// 해당 주소의 배열값이 실제로 바뀌어 버림


                  value   address(=pointer)  <-- 각각 다른것이 넘어옴

static int func(int n, int arr[]) {
           System.out.println(n);
           System.out.println(arr[0]);

           n = 22;
           arr[0] = 22;

          return n;
}


static void arrDiv2(int aNum[]) {

           for (int i = 0; i < aNum.length; i++) {
                      aNum[i] /=2 ;
           }


}

// swap 함수
static void swap(int a, int b) {
           int temp;

           temp = a;
           a = b ; 
           b = temp;
}

  //swap Array
static void swapArr(int[] arr) {
           int temp;

           temp = arr[0];
           arr[0] = arr[1] ; 
           arr[1] = temp;
           System.out.println("함수안 arr[0] = " + arr[0] + ", arr[1] = " + arr[1]);
}

static void standardFunc (int a, int[] arr) {
// 배열은 주소값이 매개변수로 들어가기 때문에 return 하는 결과와 똑같이 된다.

}


// 배열 return 함수가 필요할 때는 
// 값들을 배열에 미리 담아서 반환할 때
// 예시 : 랜덤 숫자 받을때 

 

static int[] randomValue() {
           int arr[] = new int[3];
           for (int i = 0; i < arr.length; i++) {
                      arr[i] = (int)(Math.random() * 3);
                      }
            return arr;
}

}