2018-2-23 TIL 메소드와 변수의 스코프

Method

public static void main(String [] args){
	int num1 = 5;
    int num2 = 7;
    System.out.println("5 + 7 = " + (num1 + num2));
}

위의 코드로부터 우리가 아는 것은 2가지로 정리가 된다.

  1. 메소드의 이름은 main이다.
  2. main문 안에있는 문장들은 순차적으로 실행이 된다.

모르는것들

  1. public, static, void가 왜 붙어있고 의미하는 바는?
  2. 이름은 왜 항상 main이어야 하는가?
  3. String [] args는 무엇인가?
  • 메소드 이름이 항상 main인 이유는 자바프로그램은 main이라는 이름의 메소드에서부터 시작을 하기때문이다.
class MethodDef {
	public static void main(String [] args){
    	System.out.println("프로그램의 시작");
        hiEveryone(12);
        // 12를 전달하며 hiEveryone을 호출
        hiEveryone(13);
        // 13를 전달하며 hiEveryone을 호출
        System.out.println("프로그램의 끝");
    }

    public static void hiEveryone(int age){
    	System.out.println("제 나이는 "+ age + "세 입니다.);
    }
}
  • hiEveryone(12)의 12는 변수 age에 전달된다. 메소드 호출 시 전달되는 값을 받기 위해 선언된 변수를 가리켜 ‘매개변수’라고 한다.

매개변수의 특징

  1. 메소드 호출 시 선언, 전달되는 값을 저장한다.
  2. 매개변수가 선언된 메소드 내에서만 유효한 변수이다.
main이라는 이름 왼편에 void라는 키워드가 존재하는데 이는 다음의 의미를 지닌다. “이 메소드는 값을 반환하지 않는다.” 메소드의 이름 왼편에는 반환하는 자료형 정보를 삽입하게 되어있다.
public static int adder(int num1, int num2){
	int addResult = num1 + num2;
    return addResult;
}
// return문의 의미 : 값을 반환해라, 그리고 addResult에 저장된 값을 반환해라

return 키워드가 지니는 의미

  1. 메소드를 호출한 영역으로 값을 반환
  2. 메소드의 종료

변수의 스코프

변수의 스코프란 임의의 변수에 대한 ‘접근 가능 영역’ 또는 ‘변수가 소멸되지 않고 존재할 수 있는 영역’을 의미한다.

중괄호 {…}는 주로 사용될 때

  1. if문 또는 if ~ else문
  2. while, for문, switch문
  3. 메소드 본체를 감싸는 용도
  • 중괄호로 특정 영역을 감싸면, 해당 영역은 변수에 관한 별도의 스코프를 형성하게 된다.
if(...) {
	int num = 5;
    //지금부터 닫는 중괄호 내에서만 변수 num 접근가능
    ...
}
package yoon;

public class LocalVaribale {
    public static void main(String [] args){
        boolean ste = true;
        int num1 = 11;
        // 변수 num1의 선언

        if(ste){
            // int num1 = 22;
            // 주석을 해제하면 컴파일 오류 발생
            num1++;
            System.out.println(num1);
        }

        {
            int num2 = 33;
            num2++;
            System.out.println(num2);
        }

        //System.out.println(num2);
    }
}

  • 중괄호 내에 선언된 변수를 가리켜 지역변수(Local Variable)이라고 한다. 지역변수는 선언된 지역을 벗어나면 메모리 공간에서 소멸된다.

오늘의 느낀점

  • 평소에는 정리위주로 팩트위주로 TIL을 올리다가 다른사람들의 블로그를 보니 개인후기를 많이 올려서 나도 개인후기를 한번 올리게됬다. 프로그래밍을 하면서 객체, 인스턴스, 메소드, 클래스라는 개념에 대해서 이해하기가 난해한 개념들이였다. 자바의정석, 열혈자바, 자바의신, 헤드퍼스트 자바 시리즈를 통해서 자바의 클래스, 메서드, 인스턴스, 객체의 개념에 대해서 점점 다른 시각을 가지게 되었고, 전보다 선언하고 이용을 하는데 많이 익숙해졌다. 한달전만해도 자바라는 언어가 매우 생소했었는데, 이제는 점점 익숙해져서 감사 :)
Written on February 23, 2018