[혼자 공부하는 자바] 7/07 06-4 [메소드]

2020. 7. 7. 23:17·JAVA
목차
  1. 메소드
  2. 리턴문
  3. 객체 내/외부에서 메소드 호출
  4. +메소드 익히기
  5. 메소드 오버로딩
  6. 확인문제


6-4 메소드

선언부, void, 매개변수, 리턴문, 호출, 오버로딩

 

메소드

메소드 선언: 1.선언부 2.실행블록 으로 구성된다.

(선언부를 메소드 시그니처라고도 한다!)

(선언부 --> 리턴타입, 메소드이름, 매개변수선언)

ㄴ리턴 값이 없을 수도 있다. -->리턴 타입 void로 적는다.

ㄴ리턴값 없으면 저장할 변수도 딱히 필요 없으니까 그냥 메소드만 호출하면 된다.

ㄴ리턴 타입 있어도 반드시 변수에 넣을 필요는 없다. 리턴값이 중요하지 않다면 그냥 메소드만 호출해도 된다.

상황에 맞게 잘 쓰자!!

>>리턴값이 없어 단순 호출만 할건지, 리턴값을 받아서 어떤 변수에 저장해둘건지.

 

메소드 이름도 자바 식별자 규칙에 맞게 작성한다.

(복습: $랑_만 됨, 숫자로 시작하면 안됨 등등)

 

 

 

+매개변수 관련

매개값 타입이랑 넣는 값이 같아야 한다.

다만 'byte 타입 변수'가 들어간다면 자동으로 int로 변환된다.

 

+매개변수의 개수를 모른다면 어떻게 할까요?_?

 

매개변수를 배열 타입으로 선언하면 됩니다>_<

 

 

 

1번처럼 한다면

실행클래스에서 어떤 배열을 따로 선언해 쓰면 되겠다.

호출할때 그 배열의 항목 값들을 메소드 매개변수 자리에 넘겨준다. (또는 매개변수 자리에 직접 배열생성)

2번처럼 한다면

배열을 딱히 먼저 생성하지 않고,

메소드 호출할 때 작성한 데이터 수에 따라서 자동으로 배열이 생성되고 그것이 매개값으로 사용된다.

값 쭈루룩 쓰면 된다. 쉼표로 구분.

 

다음처럼..

 

 


리턴문

메소드 선언할 때 타입 적어줬으면 반드시 리턴문 사용해야 한다. 리턴문 없으면 에러!!

리턴문이 실행됨으로써 메소드가 종료된다.

++리턴문 다음에 뭘 실행하려고 작성하면 컴파일 에러!! --> "Unreachable code"

 

리턴값은 

1. 리턴 타입이거나

2. 리턴 타입으로 변환가능해야한다. (리턴타입 int면 byte, short값 리턴되어도 노상관-->int로 자동 타입 변환된다!)

 

ㅡㅡㅡㅡㅡ

리턴값이 없는 메소드--> void로 선언된 메소드

 

void로 선언된 메소드에 return문은 사용한다면, 리턴값을 넣는게 아니라 단지 메소드 실행을 강제종료하는거다.

(break문과 달리, return문은 메소드 자체를 즉시 종료시킨다.)

(break문은 스위치문이나 반복문을 빠져나오는 거였지)

 

 

 

<<return문 실습>>

 

 

ㅇ잘 보면, return;을 쓰는 경우와 쓰지 않는 경우를 구분할 수 있다.

메소드 종료가 필요하지 않으면 return문을 쓰지 않는다.

 

ㅇCar클래스의 메소드를 호출해서 필드값을 변경하기도 하고, 어떤 값을 리턴해내기도 한다.

 

+16줄... if문과 else문을 사용한 이유:

myCar.isLeftGas()가 true면 if문을, false면 else문을 실행

 

 


객체 내/외부에서 메소드 호출

+메소드 익히기

 

ㅇ클래스내부에서 메소드 호출

 

이렇게 사용하는구나

 

 

 

 

ㅇ클래스 외부에서 메소드 호출..

메소드는 객체에 소속된 멤버이므로 메소드 호출 전에 객체 호출 먼저 넵넵

 

 


메소드 오버로딩

같은 이름의 메소드를 여러개 선언한다.

매개값을 다양하게 받을 수 있게 하기 위함.

(얼마 전에는 생성자 오버로딩을 학습했다.)

 

필요성 ++

>>

int plus(int x, int y) { ... };

이 메소드를 호출하려면 int값 2개가 필요하다.

double타입 덧셈은 불가능하다.

그래서, 매개 변수가 double타입인 plus()메소드를 하나 더 선언하는 것이다.

int plus(double x, double y) { ... };

 

메소드를 호출하면, JVM은 매개값 타입을 보고 메소드를 선택한다.

 

++일차적으로 매개변수의 타입을 보지만, 타입이 일치하지 않으면 타입자동변환이 가능한지 검사하고, 자동변환이 가능하면 변환하여 알맞은 메소드를 선택한다.

 

ㅡ주의점 : 이런건 오버로딩이 아니라 컴파일 에러가 난다.

ㄴ리턴 타입만 다르고 매개변수가 동일한 경우.

예를 들면

int divide(int x, int y) {...}

double divide(int boonja, int boonmo) {...}

--->컴파일 에러 발생.

 

ㅡ오버로딩의 대표적인 예

System.out.println() 메소드....

>>호출 시 주어진 매개값에 따라서 오버로딩된 println()메소도 중 하나 골라 호출한다.

 

void println() {...}

void println(boolean x) {...}

void println(char x) {...}

void println(char[] x) {...}

void println(double x) {...}

void println(Object x) {...}

등등등~~

 

 

<<메소드 오버로딩 익히기>>

매개변수 입력값 개수에 따라 

직사각형 넓이 구할지, 정사각형 넓이 구할지

알맞은 메소드를 호출하게 하는

오버로딩 작성

 

 

오버로딩 메소드
매개변수 개수를 달리 입력

 

 


확인문제

03.

 

또 이거 틀렸어.. 문자열인거 인지를 해야 한다.. 문자열 비교 머릿속에 항상 담아두기...

 

ㅠㅠ제발!! 문자열 비교는 .equals() 메소드로 해야지..

==는 참조 비교하는게 되잖아..!!

 

 

 

 

04.

println() 메소드 오버로딩 해보기

 

나는

 

 

이렇게 했는데

 

답지 보니까

return;을 쓰지 않고,

메소드 선언을 static void로 시작했다.

 

왜 그래야 하나요??ㅠㅠ

ㅡㅡㅡㅡㅡㅡㅡㅡㅡ

static을 배우고 다시 여기로 왔따.

여기서 만든 println() 메소드들을

인스턴스 필드를 포함하고 있지 않다.

그래서 정적 메소드로 선언하는 것이 더 메모리 측면에서 효율적이다.

 

'JAVA' 카테고리의 다른 글

[혼자 공부하는 자바] 7/08 06-6 [패키지와 접근 제한자]  (1) 2020.07.08
[혼자 공부하는 자바] 7/08 06-5 [인스턴스 멤버와 정적 멤버] [static] / [private] [접근제한자] / [final 필드] [상수]  (1) 2020.07.07
[1주차] 기본미션 + 선택미션 [혼공단] [혼공자]  (0) 2020.07.07
[혼자 공부하는 자바] 7/06 06-3 [생성자] [생성자 선언] [생성자 오버로딩]  (0) 2020.07.06
[혼자 공부하는 자바] 7/06 06-2 [필드]  (1) 2020.07.06
  1. 메소드
  2. 리턴문
  3. 객체 내/외부에서 메소드 호출
  4. +메소드 익히기
  5. 메소드 오버로딩
  6. 확인문제
'JAVA' 카테고리의 다른 글
  • [혼자 공부하는 자바] 7/08 06-6 [패키지와 접근 제한자]
  • [혼자 공부하는 자바] 7/08 06-5 [인스턴스 멤버와 정적 멤버] [static] / [private] [접근제한자] / [final 필드] [상수]
  • [1주차] 기본미션 + 선택미션 [혼공단] [혼공자]
  • [혼자 공부하는 자바] 7/06 06-3 [생성자] [생성자 선언] [생성자 오버로딩]
히어로맛쿠키
히어로맛쿠키
  • 히어로맛쿠키
    yeny_lab
    히어로맛쿠키
  • 전체
    오늘
    어제
    • 분류 전체보기 (388)
      • 미분류글 (30)
        • ㅇ (2)
      • JAVA (84)
        • Effective Java (1)
        • Application (21)
      • 컴퓨터구조 & OS (29)
      • 자료구조 + 알고리즘 (43)
      • Database (12)
      • 컴파일러 (10)
      • 수학 (33)
        • 미분방정식 (12)
      • 데이터분석과 머신러닝 (38)
      • 기타 (58)
      • yyeeennyy (25)
  • 최근 글

  • hELLO· Designed By정상우.v4.10.4
히어로맛쿠키
[혼자 공부하는 자바] 7/07 06-4 [메소드]

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.