본문 바로가기
TIL/JAVA

23.04.14

by J1-H00N 2023. 4. 17.

선언 위치에 따른 변수의 종류

클래스 영역 - 클래스 변수

객체 생성을 하지 않아도 생성되고 언제든지 사용가능

접근 방법 : 클래스명.클래스변수명

 

클래스 영역 - 인스턴스 변수

객체가 생성될 때 인스턴스 변수가 생성

접근 방법 : 참조변수명.인스턴스변수명

 

메서드 영역 - 지역 변수

메서드가 호출되서 실행될 때 생성되며 메서드가 종료되면 자동으로 제거

class Obj4_1 {
    int iv;        // 인스턴스 변수
    static int cv; // 클래스 변수(static 변수, 공유 변수)

    void method() {
        int lv;
        lv = 30;
        // 지역변수는 자동으로 초기화가 되지 않기 때문에 사용하려면 반드시 초기화 필요
        System.out.println("lv 지역 변수 = " + lv);
    }
}


class Obj4_1Main {
    public static void main(String[] args) {

        // 클래스 변수 접근 및 사용
        // 접근방법 : 클래스명.클래스변수이름
        Obj4_1.cv = 10;
        System.out.println("ObjVar.cv 클래스 변수 = " + Obj4_1.cv);

        // 인스턴스 변수 생성 및 사용
        // Obj4_1.iv = 20; // Error, 인스턴스를 통해서만 생성 및 사용 가능
        Obj4_1 objVar = new Obj4_1();
        objVar.iv = 20;
        System.out.println("objVar.iv 인스턴스 변수 = " + objVar.iv);

        // 지역 변수 생성 및 사용
        // objVar.lv // Error, 인스턴스로 지역 변수 바로 접근 불가능
        objVar.method(); // 메서드 호출 시 지역 변수 생성
        // 메서드 종료시 지역 변수 삭제
    }
}

 

메서드

반환타입 메서드이름 (타입 변수명, 타입 변수명, ... ) // (선언부)
{
// 메서드가 호출되면 수행할 코드(구현부)
}

 

장점

중복 코드 제거 / 관리 용이 / 재사용 가능

 

작성

반복적으로 수행되는 여러 문장을 메서드로 작성

하나의 메서드는 한 가지 기능만 수행하도록 작성하는 것이 좋음

 

함수

값을 입력받아 처리하고, 결과를 반환

int(반환 타입) add(메서드 이름)(int x, int y)(매개변수)  { 
int result = x + y; => 처리
return result; => 결과를 반환
}
void(반환타입) : 메서드 수행 시 아무것도 반환하지 않을 때 사용합니다

 

메서드 호출 - 메서드이름(값1, 값2, ...);

class Method5_1 {
    int add(int x, int y) {
        int result = x + y;
        return result; // 값을 반환
    }
}

class Method5_1Main {
    public static void main(String[] args) {
        Method5_1 method = new Method5_1(); // Method5_1 클래스에 만든 메서드 add 를 사용하기 위해 객체 생성

        int result = method.add(3, 5); // add 메서드를 사용해서 입력한 값(3,5)으로 처리된 값을 반환받아 result 변수에 저장
        System.out.println("result = " + result);
    }
}

 

return - 실행 중인 메서드를 종료하고 호출한 곳으로 돌아간다

반환타입이 void가 아닌 경우, 반드시 return 문이 필요

void컴파일러가 자동으로 메서드 마지막에 return; 을 추가해 준다

class Method5_2 {
    void gugudan(int dan) {
        if (!(dan >= 2 && dan <= 9)) {
            System.out.println(dan + "단은 없습니다.");
            return;
        }
        System.out.println(dan + "단 시작!");
        for (int i = 1; i < 10; i++) {
            System.out.println(dan + "*" + i + " = " + dan * i);
        }
        System.out.println();
    }

    boolean checkMax(int x, int y) {
        if (x > y) {
            return true;
        } else {
            return false;
            // return 반드시 필요합니다. 만약 없으면 조건문이 false 일 경우, void 가 아닌데 return 문이 없음으로 Error
        }
    }

}

class Method5_2Main {
    public static void main(String[] args) {
        Method5_2 method = new Method5_2();

        method.gugudan(2);
        method.gugudan(5);
        method.gugudan(10);
        method.gugudan(9);

        System.out.println("method.checkMax(10, 8) = " + method.checkMax(10, 8));
        System.out.println("method.checkMax(5, 9) = " + method.checkMax(5, 9));
    }
}

'TIL > JAVA' 카테고리의 다른 글

23.04.21  (0) 2023.04.21
23.04.20  (0) 2023.04.21
23.04.12  (0) 2023.04.12
23.04.11  (0) 2023.04.11
23.04.10  (0) 2023.04.11