organize/자바

자바 처음부터 다시 시작하기 8

001cloudid 2024. 4. 20. 13:44
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