Notice
Recent Posts
Recent Comments
Link
YTCW
java 메소드, method 본문
메서드
특정 작업을 수행하는 일련의 문장들을 하나로 묶은것이다.
메서드의 구조
선언부와 구현부가 있다
반환타입 메서드명 () : 선언부
{수행될 코드 } ;구현부
반환타입, 메서드명, 매개변수 들을 선언한다.
매개변수 선언
메서드가 작업을 수행하는데 필요한 값을 제공받기 위한 것 (파라메털라고한다)
필요한 값의 개수만큼 변수를 선언하여 각 변수 간의 구분은 쉼표를 사용한다.
반환타입
메서드의 작업수행 결과
구현부
메서드 선언부 다음에 오는 중괄호{}
return 문
void 가 아닌 경우
구현부안에 반드시 return 반환값타입데이가 포함되어야한다.
해당 반환값은 반환타입과 일치하거나 적어도 자동 형변황이 가능한것
지역변수
메서드 내에 선언된 변수는 그 내부에서만 사용이 가능하고
메서드의 구현부에 작성된 변수뿐 아니라
매개변수도 메서드 내에서 선언된 것으로 간주하기때문에 지역 변수로 인식한다.
package chapter05;
class Example {
// int x; int y;랑 같음
int x, y;
// add 메서드
int add(int x, int y) {
return x + y;
}
// multiply 메서드
int multiply (int x, int y) {
return x + y;
}
// 매개변수 x, 반환값 x
void print99dan () {
for (int i = 0; i < 8; i++) {
for (int j = 0; j < 8; j++ ) {
System.out.print(j * i + " ");
}
System.out.println();
}
}
}
// class 파일
public class Method02 {
// main 인 메서드
// 접근 제어자 정적 메서드 반환타입 메서드명 (매개변수) {... 구현부로 이루어져있다}
public static void main(String[] args) {
Example ex1 = new Example();
ex1.x = 9;
ex1.y = 9;
ex1.add(10, 20); // 타입과 들어가는 파라메터 개수를 지켜줘야함
ex1.add('a', 'b');
// int 타입만 사용해야되는데 char 타입을 넣어도 문제가 없다.
// 자동형 변환이 되기 때문에 좋은 사용 방법은 아니다
ex1.print99dan();
}
}
사칙연산 클래스
두개의 값을 매개변수로 전달받아 사칙연산 수행
package chapter05;
class MyMath {
// 매개변수가 있고, 반환값이 있음
// 매개변수는 타입 생략이 불가하다
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int multiply(int a, int b) {
return a * b;
}
int divide(int a, int b) {
return a / b;
}
// return 문
// : 현재 실행중인 메서드를 종료하고 호출한 메서드로 돌아감
// 반환값 유무에 상관없이 반드시 존재해야합니다.
// 반환이 없는 메서드
void noReturn () {
System.out.println("해당 메서드는 반환값이 없습니다.");
return;
// 자바 메서드 컴파일러가 반환 타입을 읽고
// 자동으로 return; 을 추가한다. 그래서 생략해도 된다
}
String yesReturn () {
String name = "익명";
return name;
// 반환 타입이 void 가 아닌경우에는
// return 문 생략 시 오류가 발생한다.
// 반드시 반환 타입의 데이터값이 반환되어야한다.
// 생략하고 싶으면 void 를 쓰자
}
int max (int a, int b) {
if (a>b) {
return a;
} else {
return b;
}
}
// 반환 타입이 있는 경우에는 항상 결과값이 반환되도록 지정해야한다.
// return 쓰였지만 조건에 따라 반환되지않을 경우의 수가 있을떄는 에러남
int min (int a, int b) {
return a < b ? a : b;
}
//
}
public class Method03 {
public static void main(String[] args) {
MyMath mm = new MyMath();
// 앞의 MyMath 데이터 타입을 의미한다
// 두의 MyMath는 생성자 호출을 의미한다 new 를 붙이는건 생성하는것
System.out.println(mm.add(10, 20)); // 30
mm.noReturn(); // 해당 메서드는 반환값이 없습니다.
System.out.println(mm.max(11, 12)); // 12
System.out.println(mm.max(11, 12)); // 12
}
}
정적 메서드
메서드 앞에 static 키워드를 붙여 클래스 (정적) 메서드 생성
인스턴스 생성 없이도 호출 가능 메서드이다.
클래스명.메서드명(매개변수...) 로 사용한다.
호출겸 , 값 변경도 가능
사용 권장 사항
클래스 설계 시, 변수 중 모든 인스턴스가 공통적으로 사용하는 값
인스턴스 변수를 사용하지 않는 경우에 static 사용
클래스 메서드 내에서 인스턴스 변수 호출을 하지 않는다.
package chapter05;
// 정적 메서드
class Operator {
// 인스턴스 변수
int a, b;
// 인스턴스 메서드 : 인스턴스 변수 a, b 가 필요한 작업
// 매개변수가 필요하지 않는 경우가 있음
int add() {
return a + b;
};
int subtract() {
return a - b;
};
// 인스턴스 변수와 관계없이 매개변수만으로 작업이 가능하다
static int multiply (int a, int b) {
return a * b;
}
static int divide (int a, int b) {
return a / b;
}
static int dff = 123;
}
public class Method04 {
public static void main(String[] args) {
// 인스턴스 생성
Operator op = new Operator();
op.a = 10;
op.b = 20;
System.out.println(op.add()); // 30
System.out.println(op.subtract()); // -10
// 정적 (클래스) 메서드 호출
// 클래스.메서드명(매개변수...)
int result1 = Operator.multiply(10,20);
int result2 = Operator.divide(10,20);
System.out.println(result1); // 200
System.out.println(result2); // 0
}
}
'java' 카테고리의 다른 글
java constructor (0) | 2024.09.06 |
---|---|
java 용어 정리, overloading (0) | 2024.09.06 |
java 객체 지향 프로그램의 변수 (0) | 2024.09.05 |
java 객체 지향 프로그래밍, oop (object - orientend - programming) (3) | 2024.09.05 |
java 배열, array (4) | 2024.09.05 |