Step it up now

메서드 호출, 값 전달 본문

개인공부/JAVA

메서드 호출, 값 전달

케잉 2024. 1. 15. 20:32
public class Method2 {

       public static void main(String[] args){
           printHeader();//1. 매서드 작동!
           System.out.println("프로그램이 동작합니다");
           printFooter();
       }
       
        public static void printHeader() { //매개변수 없어서 그냥 호출되고
            System.out.println(" = 프로그램을 시작합니다 = ");//실행 후 종료
            return;//main으로 리턴
        }

         public static void printFooter() {
        	System.out.println(" = 프로그램을 종료합니다 = ");
    }
}

 

결과

 

 

 


 

 

📢 메서드 호출이 끝나면 더이상 해당 메서드가 사용한 메모리를 낭비할 이유가 없다

매서드 정의에 사용한 파라미터 변수인 int a, int b와 그 안에서 정의한 int sum도 모두 제거된다

public class Method1Ref {

        public static void main(String[] args){
            //계산1
          int sum1 = add(5, 10);
          System.out.println("결과1 출력:" + sum1);//4

            //계산2
           int sum2 = add(15, 20);
            System.out.println("결과2 출력:" + sum2);//8

        }
        //add 메서드
        public static int add(int a, int b) {
            System.out.println(a + "+" + b + "연산 수행"); // 실행 순서1// 순서5
            int sum = a + b;//2 //6
            return sum;//3 //7
        }
}

 

결과

 

 


 

 

public class MethodValue0 {

    public static void main(String[] args) {
        int num1 = 5;
        //num1의 값을 복사해서 num2에 넣는 것
        //복사한다고 표현하는 이유는 num1의 값을 읽어도 num1에 있는 기존값이 유지되고
        //새로운 값이 num2에 들어가기 때문이다, num1 변수 자체가 num2에 들어가는 게 아니다
        //num1에 들어있는 값을 읽고 복사해서 num2에 넣는 것이다.
        int num2 = num1;  //num 1=5,  num2=5
        num2 =10; //num2에 10이됨

        System.out.println("num1=" + num1);
        System.out.println("num2=" + num2);
    }
}

 

결과

 

 


 

public class MethodValue1 {

    public static void main(String[] args) {
        int num1 =5;
        System.out.println("1. changeNumber 호출 전, num1: " + num1);
        changeNumber(num1); //5의 값을 복사해서 num2에 전달 ★★
        //num2의 값이 바뀌더라도  num1의 값에는 영향X
        System.out.println("4. changeNumber 호출 후, num1: "+ num1);
    }

    public static void changeNumber(int num2){ //num2=num1 = 5 // 5가 넘어옴 //
        System.out.println("2. changeNumber 변경 전, num2: "+ num2);
        num2 = num2 * 2; //5*2 =10 ==> 10은 num2에 들어감
        System.out.println("3. changeNumber 변경 후, num2 " + num2); //10
    }
}

 

결과

 

 

 


 

  public class MethodValue2{
        //main()도 메서드이다. 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분리된 다른 변수임
        //이름이 같아도 완전히 다른 변수다
        //main()의 number와 changeNumber()의 number는 서로 다른 변수이다

        public static void main(String[] args) {
             int number=5;
              System.out.println("1. changeNumber 호출 전, number: " + number);
              changeNumber(number);
              System.out.println("4. changeNumber 호출 후, number: "+ number);
        }

        public static void changeNumber(int number){
                System.out.println("2. changeNumber 변경 전, number: "+ number);
                number = number * 2; //5*2 =10 ==> 10은 num2에 들어감
                System.out.println("3. changeNumber 변경 후, number " + number);
        }
}

 

결과

 

 

 


 

public class MethodValue3 {
        //main()도 메서드이다. 각각의 메서드 안에서 사용하는 변수는 서로 완전히 분리된 다른 변수임
        //이름이 같아도 완전히 다른 변수다
        //main()의 number와 changeNumber()의 number는 서로 다른 변수이다

	   public static void main(String[] args) {
            int num1=5;
            System.out.println("1. changeNumber 호출 전, num1: " + num1);
            num1 = changeNumber(num1); //11번 10 리턴받음
            System.out.println("4. changeNumber 호출 후, num1: "+ num1); // num1 = 10이 됐음
        }

          public static int changeNumber(int num2){
            num2 = num2 * 2;
            System.out.println(num2); //10
            return num2; //10을 리턴
        }
}

 

결과

 


 

public class MethodReturn1 {
    public static void main(String[] args) {
      boolean result = odd(2);
        System.out.println(result); //false
    }

    public static boolean odd(int i) {
        if(i % 2 == 1) { //false //void 아니라서 boolean이면 return type 꼭 반환해줘야함
            return true;
        }else{
            return false; 
        }
    }
}

 

결과

 

 


 

'개인공부 > JAVA' 카테고리의 다른 글

스코프  (0) 2024.03.31
if문  (0) 2024.03.19
인터페이스  (1) 2023.12.17
추상메서드/ 추상클래스  (0) 2023.12.12
오버라이딩(overriding)  (0) 2023.12.04