일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- 프로그래머스
- 이진 탐색(binary search)
- 99클럽
- 항해99
- 면접(java
- 코딩테스트 준비
- css
- 코딩문제
- 개발자 취업
- 자바
- GIT
- 자료구조
- CS
- 정렬 알고리즘(sort algorithm)
- Til
- 메서드
- Spring
- 코딩
- 회고
- wil
- Entity
- github
- 배열
- 코딩공부
- cs 공부)준비
- Java
- aop
- Grafana
- HTML
- ArrayList
- Today
- Total
hayu's 개발 일지
[TIL]240224 메서드(2) 본문
메서드 정의
public static int add(int a, int b){
// 메서드 본문, 실행 코드
}
제어자 반환타입 메서드이름(매개변수 목록){
메서드 본문
}
- 제어자: public, static 과 같은 부분이다.
- 반환 타입: 메서드가 실행된 후 반환하는 데이터의 타입을 지정한다. 메서드가 값을 반환하지 않는 경우 없다는 뜻의 void 를 사용해야 한다.
- 메서드 이름: 메서드의 이름이다. 이 이름은 메서드를 호출하는데 사용된다.
- 매개변수: 파라미터라고도 부른다. 메서드의 입력 값으로, 메서드 내부에서 사용할 수 있는 변수이다. 매개 변수는 옵션이다. 입력값이 필요없는 메서드는 매개변수를 지정하지 않아도 된다.
- 메서드 본문: 실제 메서드의 코드가 위치한다. 중괄호 {} 사이에 코드를 작성한다.
void 와 return 생략
- 모든 메서드는 항상 return 을 호출해야 한다. 그런데 반환 타입 void 의 경우에는 예외로 생략해도 된다. 자바가 반환 타입이 없는 경우에는 return을 마지막줄에 넣어준다. 참고로 return 을 만나면 해당 메서드는 종료된다.
반환 타입
- 반환 타입이 있으면 반드시 값을 반환해야 한다.
=> 반환 타입이 있는 메서드는 반드시 return 을 사용해서 값을 반환해야 한다.
return 문을 만나면 그 즉시 메서드를 빠져나간다.
- return 문을 만나면 그 즉시 해당 메서드를 빠져나간다.
- 반환 타입이 있는 메서드를 호출했는데 만약 반환값이 필요 없다면 사용하지 않아도 된다. (반환 값 무시)
메서드 호출과 값 전달
- 자바는 항상 변수의 값을 복사해서 대입한다.
public static void main(String[] args) {
int num1 = 5;
int num2 = num1;
num2 = 10;
System.out.println("num1 = " + num1);
System.out.println("num2 = " + num2);
}
// 출력
// num1 = 5
// num2 = 10
- num1 에 값 5를 복사해서 num2에 넣는 것이다.
- 복사한다고 표현한 이유는 num1 의 값을 읽어도 num1 에 있는 기존 값이 유지되고, 새로운 값이 num2 에 들어가기 때문이다. 마치 num1 의 값이 num2 에 복사된 것 같다.
- num1 이라는 변수 자체가 num2 에 들어가는 것은 아니다. num1 에 들어있는 값을 읽고 복사해서 num2 에 넣는 것이다.
- 간단하게 num1 에 있는 값을 num2 에 대입한다고 표현한다. 하지만 실제로는 그 값을 복사해서 대입하는 것이다.
메서드와 형변환
- 메서드를 호출할 때도 형변환이 적용된다.
명시적 형변환
public static void main(String[] args) {
double number = 1.5;
// printNumber(number); // double 을 int 에 대입하므로 컴파일 오류
printNumber((int)number); // 명시적 형변환을 사용해 double 을 int 로 변환
}
public static void printNumber(int n) {
System.out.println("숫자: " + n);
}
- 이 경우 (int) 가 없으면 컴파일 오류가 발생한다.
- 이 경우에 메서드 호출이 필요하다면 위 코드처럼 명시적 형변환을 사용해야 한다.
자동 형변환
- int < long < double
- 메서드를 호출할 때 매개변수에 값을 전달하는 것도 결국에 값을 대입하는 것이다. 따라서 자동 형변환을 적용한다.
public static void main(String[] args) {
int number = 100;
printNumber(number);
}
public static void printNumber(double n) {
System.out.println("숫자: " + n);
}
- double 형 매개변수에 int 형 인수를 전달하는데 문제없이 작동한다.
메서드 오버로딩
- 이름이 같고 매개변수가 다른 메서드를 여러개 정의하는 것을 메서드 오버로딩(Overloading)이라 한다.
오버로딩 성공의 예
add(int a, int b)
add(int a, int b, int c)
add(double a, double b)
오버로딩 규칙
- 메서드의 이름이 같아도 매개변수의 타입 및 순서가 다르면 오버로딩을 할 수 있다. 참고로 반환타입은 인정하지 않는다.
오버로딩 실패의 예
int add(int a, int b)
double(int a, int b)
'기술 > java' 카테고리의 다른 글
[TIL]240227 클래스와 생성자(1) (0) | 2024.02.27 |
---|---|
[TIL]240226 애너테이션(Annotation) (0) | 2024.02.26 |
[TIL]240223 메서드(1) (0) | 2024.02.23 |
[TIL]240220 배열(2) (0) | 2024.02.20 |
[TIL]240219 배열(1) (0) | 2024.02.19 |