Java 변수와 메서드

조항주·2022년 4월 19일
1

study

목록 보기
1/20
post-thumbnail

객체지향 프로그래밍1

변수와 메서드

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

  • 클래스 변수
    인스턴스를 생성하지 않아도 '클래스 이름.클래스 변수' 와 같은 형식으로 사용가능
    클래스 변수는 모든 인스턴스가 공통된 저장공간을 공유, 한 클래스의 모든 인스턴스들이 공통적인 값을 유지해야 하는 속성의 경우 클래스 변수로 선언 ex) 학생 클래스의 학생 인스턴스의 개수

  • 인스턴스 변수

    클래스의 인스턴스를 생성할 때 만들이진다.
    따라서 인스턴스가 있을 때만 '인스턴스 이름.인스턴스 변수'사용가능
    독립적인 저장공간을 가지므로 서로 다른 값을 가질 수 있다. ex) 학생 클래스의 나이,키 등등

  • 지역 변수
    메서드 내에 선언되어 메서드 내에서만 사용 가능
    for, while 문의 {}안에 생성된 변수들은 {}을 벗어나면 소멸됨

  • 매개 변수
    메서드가 호출될 때 생성
    메서드 내에서만 사용가능
    메서드가 끝나면 소멸

public class Student {
    //인스턴스 변수
    public int age; 
    public int height;

    //클래스 변수
    public static int cnt=0; 
    public static int money=0; 
    
    //생성자
    public Student(int age, int height) {
        this.age = age;
        this.height = height;
        cnt+=1; //학생이 생길 때마다 1씩 올려줌
    }
}

메서드

메서드를 사용하는 이유

  1. 높은 재사용성
  2. 중복된 코드의 제거
  3. 프로그램의 구조화

메서드의 선언과 구현

메서드의 선언부는 메서드의 이름 매개변수 선언 반환 타입으로 구성되어 있습니다

	//선언부
    static int add(int a,int b)
    //구현부        
    {
        int result=a+b;
        return result;
    }

매개변수의 선언

변수 선언과 달리 타입이 같아도 변수의 타입을 생략할 수 없음

int add(int a,int b) {...}
int add(int a, b) {...} //에러

return 문

메서드의 반환타입이 'void'가 아닌 경우 구현부 안에 return이 반드시 포함되어 있어야 함

반환값은 반환타입과 일치하거나 적어도 자동 형변환이 가능해아 함

반환값은 한 개만 가능
반환타입이 'void' 이여도 return문이 필요하지만 컴파일시 자동으로 'return;' 을 추가해줌

메서드의 호출

인자와 매개변수

메서드를 호출할 때 괄호 안의 값들은 인자
메서드를 선언할 때 괄호 안의 값들은 매개변수
메서드를 호출할 때는 인자의 타입과 매개변수의 타입이 일치하거나 자동 형변환이 가능해야 한다

메서드의 실행 흐름

int add(int a,int b) {
    return a+b;
}

int c=add(5,10);
  1. main 메서드에서 메서드 add를 호출한다 호출시 지정한 인자들 5,10 이 add의 매개변수 a,b에 각각 복사 된다.
  2. 메서드 add의 괄호 {} 안에 있는 문장들이 순서대로 수행된다.
  3. 메서드 add의 ㅗㅁ든 문장이 실행되거나 return 문을 만나면 호출한 메서드로 되돌아와서 이후의 문장들을 실행한다.

0개의 댓글

관련 채용 정보