자바

7. 메서드

juhoyang 2024. 9. 24. 09:58

메서드

- 자바에서 클래스내 정의된 함수를 메서드라고한다.

 

함수란?

- 프로그래밍에서는 일정한 동작을 수행하는 코드이다.

 

예시

- sum(a, b) = a+b

 

수행

- sum(1, 2) = 1 + 2 = 3

- sum(3, 4) = 3 + 4 = 7

 

매서드 정의방법

 

선언부

- public static int add(int a, int b)

- 반환 타입, 이름, 매개변수(파라마터)를 포함한다.

- 이름으로 호출해 사용가능하다.

 

선언부 상세

 

1) 접근제어

- 다른 클레스에서 호출할수 있는 범위를 정한다.

종류 접근
public 같은 패키지 모든 클래스, 다른 패키지도 모든 클래스 가능
protected 같은 패키지내 모든 클래스, 다른 패키지 내 자식 클래스 가능
default(생략한 경우) 같은 패키지내 모든 클래스만 가능
private 선언된 클래스에서만 사용가능

 

2) static

- 해당 키워드는 프로그램 실행시 메모리에 공간을 할당받아 프로그램 종료시까지 사용한다는 뜻이다.

- 실행시 이미 메모리에 할당받아 있으므로 객체 생성 없이 메서드 사용이 가능하다.

- 주로 유틸리티 관련 함수에서 사용한다. (Math.max(a, b))

 

3) 리턴(반환)타입

- void : 반환이 필요없을 경우

- 자료형 : 해당 자료형으로 return 함

 

4) 메소드 이름

- 메소드의 이름으로 호출할 때 사용한다.

 

5) 매개변수

- 메서드를 정의할 때 선언한 변수를 매개변수 라고 한다. (영어로 파라미터)

- 메서드 내에 값을 받아 사용이 필요하면 작성하고 필요 없으면 비어두어도 된다.

 

{}

메서드 본문으로 수행할 코드이다.

 

main메서드 확인해보기

- java 는 어플리케이션이 실행되면 제일 먼저 main메소드를 실행한다.

 

public

- main메서드가 어디에 있건 jvm에서 접근 가능해야 하기 때문에 public을 쓴다.

 

static

- main 메서드는 프로그램 실행시 제일 먼저 실행되는 메서드로 먼저 메모리에 올려져있어야 한다.

 

void

- main메서드는 프로그램의 시작과 끝으로 종료시 프로그램이 종료를 뜻하여 반환 값이 없다.

 

String[] args

- 매개변수로 main메서드를 실행할 때 전달해야하는 값이 있다면 함께 전달가능하다.

 

호출과 복사

- 매소드는 호출시에 받는 파라미터를 복사해서 사용한다.

- 호출시 변수를 넣어 사용해도 해당변수를 수정하지 않는다. 

 

예시

- divide 함수에 변수 a를 넣어서 사용 -> divide에서 a를 나누기 해도 main의 a는 변하지 않음

- 해당 값을 사용하려면 divide의 리턴값을 int로 하여 결과값을 전달해야한다.

 

형변환

- 매개변수로 변수를 보내는데 자료형이 다를 때 매개변수의 표현 값이 크면 호출가능하다.

- int < long < float < double

 

참고

 

2. Java 변수, 형변환

1. 변수유형이름크기범위리터럴정수형int4byte-2,147,483,648 ~ 2,147,483,647 (약 20억) 일반적인 정수 (1230, 1234)long8byte-9,223,372,036,854,775,808            ~ 9,223,372,036,854,775,807정수뒤에 L 필요 (1L)실수형float4

juhoyang.tistory.com

 

메서드 오버로딩

- 한클래스 내에 같은 이름의 메소드를 매개변수의 타입이나 순서를 다르게 해서 여러개 생성하는 것

- 매개변수 타입 or 순서는 무조건 달라야 하고 반환타입은 자유롭게 설정 가능하다.

 

- 예시

    //순서가 다를경우
    public void methodTypeA(int a,  String b){}
    public void methodTypeA(String a, int b){}
    
    //매개변수 타입이 다를경우
    public void methodTypeB(int a,  int b){}
    public void methodTypeB(int a, String b){}
    
    //매개변수 갯수가 다를경우
    public void methodTypeC(int a,  int b){}
    public void methodTypeC(int a, int b, int c){}

 

- 타입 or 순서가 같으면 반환 타입이 달라도 아래와 같이 에러가 발생한다.

 

메서드 시그니처

- 매서드 이름 + 매개변수 타입(순서)

- 자바에서 메서드를 구분할 수 있는 고유한 식별자나 서명

 

메서드 이름

- 변수이름은 일반적으로 명사를 사용한다. (saleSum, rateValue)

- 매서드는 특정 동작을 수행하는 코드로 동사로 이름을 짓는다. (println, add)

 

장점

1) 코드 재사용성 

- 특정 기능을 캡슐화 하여 필요할때 마다 작성할 필요없이 호출함으로써 재사용 가능하다

 

2) 코드 가독성

- 메서드 명은 수행하는 작업을 나타내어 코드를 읽는사람에게 가독성이 좋다. 

- 복잡한 소스를 확인할때 최대한 메소드로 나누어 메소드 명만 보이는것이 가독성이 좋다.

 

3) 모듈성

- 규모가 큰 프로그램을 각 모듈별로 나누어 메소드로 작성하면 가독성이 좋고, 디버깅하기 쉽다.

 

4) 코드 유지관리

- 코드의 특정 부분을 수정한다면 해당 모듈인 메소드만 수정하여 전체 코드를 수정하지 않아도 된다.

 

5) 재사용성, 확장성

- 설계된 메서드를 다른 프로그램이나 프로그램에서 재사용 가능하고 새로운 기능을 추가하기 용의하다.

 

6) 추상화

- 메서드를 사용하는 곳에는 메소드 코드내용을 알 필요없이 사용가능하다.

 

7) 테스트, 디버깅 용이

- 각각의 메서드는 독립적으로 테스트 가능하고 디버그 가능하다.

 


참고

김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음

https://www.inflearn.com/course/%EA%B9%80%EC%98%81%ED%95%9C%EC%9D%98-%EC%9E%90%EB%B0%94-%EC%9E%85%EB%AC%B8/dashboard

 

[지금 무료] 김영한의 자바 입문 - 코드로 시작하는 자바 첫걸음 강의 | 김영한 - 인프런

김영한 | 프로그래밍에 처음 입문하는 분들을 위한 자바 강의입니다. 코드를 따라하면서 손쉽게 자바를 배울 수 있습니다., 국내 개발 분야 누적 수강생 1위, 제대로 만든 김영한의 자바 입문[사

www.inflearn.com

 

 

'자바' 카테고리의 다른 글

[java]Class, Object, Instance  (1) 2024.09.25
객체 지향과 절차지향 언어 비교  (0) 2024.09.25
6. Java 스코프  (1) 2024.09.23
5. 반복문 (while, do-while, for)  (0) 2024.09.20
4. 조건문 (if, switch, ? :)  (0) 2024.09.20