[Java] OOP_변수(Variable)와 메소드(Method), 리턴문(Return)

jeong·2021년 5월 20일
0

Java 자바

목록 보기
11/28

변수(Variable)와 메소드(Method), 리턴문(Return)

변수(variable)

변수의 선언 위치가 변수의 종류와 범위를 결정한다. 변수에는 클래스변수, 인스턴스변수, 지역변수가 있다.

변수의 종류

변수의 종류선언위치생성시기
클래스변수클래스 영역클래스가 메모리에 올라갈 때
인스턴스변수클래스 영역인스턴스 생성시*
지역변수메소드 영역변수 선언문 수행시

1) 인스턴스변수(instance variable) :

  • 멤버변수(클래스 내에서 선언하는 변수)에 속함
    -인스턴스 생성마다 각각 개별적인 저장 공간이 할당, 인스턴스마다 다른 값 저장 가능

2) 클래스변수(class variable) :

//클래스 변수 선언과 객체 생성
클래스 변수=new 클래스(); 
  • = 전역변수
  • 멤버변수(클래스 내에서 선언하는 변수)에 속함
  • 같은 클래스의 모든 인스턴스들이 공유하는 변수, 모든 인스턴스가 같은 저장공간을 공유해서 공통된 값을 갖는다
  • 모두가 공통으로 사용할 수 있도록 적용된다
  • 메소드 바깥에 적음

3) 지역변수(local variable) :

  • 메소드 내 선언되며 메소드 종료와 함께 소멸됨
  • 특정 구역에서만 사용가능함
  • 하나하나 써줘야 함
class Variables {
	//인스턴스 변수
	int iv;
    
    //클래스 변수(static 변수)
    static int cv;
    
    void method() { 
	int lv=0; //지역변수 
    }
}

인스턴스 변수(iv)와 지역변수(lv)의 차이

  • iv를 묶어놓은 게 객체이다.*** => 이 부분은 그냥 외우자
  • iv가 필요없다 = 객체가 필요없다

메소드(method)

메소드 : 명령문 모음 집합, 객체의 동작에 해당하는 중괄호{ } 블록을 말한다.

  • 장점 : 반복적인 코드를 줄이고 코드 관리에 용이
  • 작성방법 :
    하나의 메소드는 한 가지 기능만 수행하도록 작성
    반복적으로 수행되는 여러 문장을 메소드로 작성

메소드의 종류

1) 인스턴스 메소드(instance method) :

  • 인스턴스 생성 후 '참조변수.메소드이름()'으로 호출
  • static 키워드를 가지지 않는 메소드
  • 메소드 내 인스턴스 변수(iv) 사용 가능
  • 인스턴스 변수, 인스턴스 메소드와 관련된 작업을 하는 메소드

2) 클래스 메소드(class method) :

  • 객체생성 없이 '클래스이름.메소드이름()'으로 호출
  • static 키워드를 붙이는 메소드 (=static method)
  • 메소드 내 iv사용X, im사용X
  • 인스턴스 변수, 인스턴스 메소드와 관련없는 작업을 하는 메소드

Q 언제 메소드에 static을 붙여줄까?
A iv를 사용하지 않을때 static 붙여 클래스 메소드로 만들어줌

class MyMath {
	long a, b;
    
    long add() { //인스턴스 메소드
    	return a+b; 
    }
    
    static long add(long a, long b) { //클래스메소드(static메소드)
    	return a+b;
    }
}

메소드 이름 작성 규칙

  • 숫자로 시작할 수 없고 $와 _를 제외한 특수 문자 사용 불가능
  • 관례적으로 메소드 이름은 소문자로 작성
  • 서로 다른 단어가 혼합된 이름이면 뒷 단어 첫 글자는 대문자로 작성
  • 수행하는 기능을 알수 있도록 기능 이름으로 작성
void startEngine() { ... }
String getName() { ... }
int[] getScores() { ... }

메소드의 호출


//메소드 호출 방법 
메소드 이름(1,2....); 

print99danAll(); //void print99danAll 호출
int result=add(3,5); //int add(int x, int y)를 호출하고 결과를 result에 저장 

리턴문(return)

실행 중인 메소드를 종료하고 호출한 곳으로 되돌아간다. 반환타입이 void가 아닌 경우 return문 필요, void라면 생략 가능하다.

int multiply(int x, int y) {
	int result x*y;
    
    return result; //반환타입이 void 아니어서 return문 필요
}

int max(a, b) {
	if(a>b) 
    	return a; //조건식이 참일때만 실행
}

리턴문 작성하기

int result=mm.add(3,5);
  int add(int x, int y) {
      int result=x+y; 
      return result; 
  }

// => 위의 두 문장을 한 문장으로 축약 가능 
int result=mm.add(3,5);
  int add(int x, int y) {
      return x+y; 
  }
//메소드를 사용할 때는 타입에 맞는 값들이 반환되고 그 값을 저장할 변수도 타입이 일치해야 한다. 
//int(첫번째 줄), int(두번째 줄), result값인 8의 타입 일치
profile
배우는 초보개발자

0개의 댓글