728x90
메서드
//메서드(객체지향개념, 클래스 안에) = 함수(클래스에 독립적)
//문장들을 묶어 놓은 것 => 작업단위로 문장들의 묶어서 이름을 붙인 것
//값(입력)을 받아서 처리하고, 결과를 반환(출력)
//메서드의 장점
//코드의 중복 ↓
//코드의 관리가 쉬움
//코드를 재활용할 수 있음
//코드가 간결해서 이해하기 쉬워짐
//메서드의 작성
//반복적으로 수행되는 여러 문장을 메서드로 작성
//하나의 메서드는 한 가지 기능만 수행하도록 작성
//메서드 = 선언부 + 구현부
// 반환타입 메서드이름(타입 변수면, 타입 변수명,...)
//{ 메서드 호출 시 수행될 코드 }
//매개변수 0~n개, 출력 0~1개
//메서드의 구현부
//지역 변수(lv) : 메서드 내에 선언된 변수
// int add(int x, int y) {
// int result = x+y;
// return result;
// }
//
// int multiply(int x, int y) {
// int result = x*y;
// return result;
// }
메서드의 호출
//메서드의 호출(call)
//메서드는 만들어 놓는 것만으로 사용할 수 없고 호출을 함으로서 사용할 수 있음
//메서드이름(매개변수1,매개변수2,.....); → 메서드를 호출하는 방법
//showInfo(); void showInfo()을 호출
//int result = add(1,5); int add(int x, int y)를 호출하고, 결과를 result에 저장
//ㄴ작업 결과를 저장할 변수 result = 메서드 호출
package chapter06;
class Calc{
//메서드는 클래스 영역에만 정의 가능
long add(long a, long b) {
return a + b;
}
long substract(long a, long b) {
return a - b;
}
long multiply(long a, long b) {
return a * b;
}
double divide(double a, double b) {
return a / b;
}
}
public class Study10Ex1 {
public static void main(String[] args) {
Calc calc = new Calc();
long add = calc.add(10, 20);
long substract = calc.substract(20, 10);
long multiply = calc.multiply(add, substract);
double divide = calc.divide(3, 2);
System.out.println("add(10,20) = " + add);
System.out.println("substract(10,20) = " + substract);
System.out.println("multiply(10,20) = " + multiply);
System.out.println("divide(10,20) = " + divide);
}
}
//메서드 실행 순서
//인스턴스를 생성 -> 메서드 호출
//main 메서드에서 메서드를 호출 -> 메서드의 괄호{ } 안에 있는 문장 들이 순서대로 수행
//-> 메서드 모든 문장이 실행되거나 return문을 만나면, 호출한 메서드(main 메서드)로 돌아와서 이후 문장들을 실행
return
//return문
//실행중인 메서드를 종료하고 호출한 곳으로 되돌아 감
//반환타입이 void인 경우 return 생략 가능
//반환타입이 void가 아닌 경우, 반드시 return문 필요
//반환값
//int add(int x, int y){ return x + y;}
//return 옆에 오는 값이 반환값. 위의 예시에서는 x + y가 반환값임
//반환값은 반환타입과 일치해야함
package chapter06;
class Calc1{
void GuGuDan(int dan) {
System.out.println(dan+"단");
for(int i = 1; i<=9;i++) {
System.out.println(dan +" * " + i +" = " + dan*i);
}
}
void GuGuDanif(int dan) {
if(!(2<=dan && dan<=9)) {
System.out.println("2부터 9단까지만 가능합니다.");
return;
} else {
System.out.println(dan+"단");
for(int i = 1; i<=9;i++) {
System.out.println(dan +" * " + i +" = " + dan*i);
}
// return;
}
}
}
public class Study11Ex1 {
public static void main(String[] args) {
Calc1 calc1 = new Calc1();
calc1.GuGuDan(3);
System.out.println();
calc1.GuGuDanif(5);
System.out.println();
calc1.GuGuDanif(12);
}
}
호출 스택(call stack)
//호출 스택(call stack)
//스택(stack) : 밑이 막힌 상자. 위에 차곡차곡 쌓임. 후입선출
//메서드 수행에 필요한 메모리가 제공되는 공간
//메서드가 호출되면 호출스택에 메모리 할당, 종료되면 해제
//아래 있는 메서드가 위의 메서드를 호출
//맨 위의 메서드 하나만 실행 중이고 나머지는 대기 중
System.out.println("Hello");
//비어있는 스택 -> main -> main(대기) println 호출(실행) -> main-> 비어있는 스택
매개변수(기본형)
//기본형 매개변수 : 변수의 값을 읽기만 할 수 있음. 변경 불가
//※참조형 매개변수 : 변수의 값을 읽고 변경 가능
package chapter06;
class Data{
int x;
}
public class Study13Ex1 {
static void change(int x) {
x = 1000;
System.out.println("change() : x = " + x);
}
public static void main(String[] args) {
Data data = new Data();
data.x = 10;
System.out.println("main() : x = " + data.x);
change(data.x);
System.out.println("After change(data.x)");
System.out.println("main() : x = " + data.x);
}
}
매개변수(참조형), 참조형 반환타입
// 참조형 매개변수 : 변수의 값을 읽고 변경할 수 있음
package chapter06;
class Data2{
int x;
}
public class Study14Ex1 {
static void change(Data2 d) { //참조형 매개변수
d.x = 1000;
System.out.println("change() : x = " + d.x);
}
public static void main(String[] args) {
Data2 data = new Data2();
data.x = 10;
System.out.println("main() : x = " + data.x);
change(data);
System.out.println("After change(data.x)");
System.out.println("main() : x = " + data.x);
}
}
package chapter06;
//참조형 반환타입
class Data3{
int x;
}
public class Study14Ex2 {
static Data3 copy(Data3 d) {
Data3 temp = new Data3(); //새로운 객체 temp를 생성
temp.x = d.x; //d.x의 값을 temp.x에 복사
return temp; //복사한 객체의 주소를 반환
}
public static void main(String[] args) {
Data3 d = new Data3();
d.x = 10;
Data3 d2 = copy(d);
System.out.println("d.x = " + d.x);
System.out.println("d2.x = " + d2.x);
}
}
728x90
'organize > 자바' 카테고리의 다른 글
Java 10 (0) | 2024.04.22 |
---|---|
Java 9 (0) | 2024.04.21 |
자바 처음부터 다시 시작하기 7 (1) | 2024.04.18 |
자바 처음부터 다시 시작하기 6 (0) | 2024.04.17 |
자바 처음부터 다시 시작하기 5 (0) | 2024.04.15 |