본문 바로가기
Language/JAVA

JAVA 5일차 - 변수와 메소드 / 재귀함수

by 코젼 2022. 6. 24.
728x90
반응형

💡변수와 메소드

// 클래스 변수는 인스턴스 변수를 사용할 수 없음.

- 클래스 변수

(ex. static int cv)

- 인스턴스 변수

(ex. int iv)

 

💡static

// 클래스 메소드에서 인스턴스 변수를 사용불가.

// 클래스 메소드에서는 인스턴스 메소드를 호출할 수 없음.

- 클래스 메소드

💡인스턴스

// 인스턴스 메소드에서는 인스턴스 변수를 바로 사용가능.

// 인스턴스 메소드에서는 인스턴스 메소드와 클래스 메소드를 호출할 수 있다.

- 인스턴스 메소드

 

📃static/인스턴스 예제 (1)

public class MemberCall {
	
	int iv = 10;
	static int cv = 20;

	// int iv2 = cv;
	// static int cv2 = iv; // 에러. 클래스변수는 인스턴스 변수를 사용할 수 없음.


	public static void main(String[] args) {
		staticMethod1();
		staticMethod2();
//		instanceMethod1(); // 에러
//		instanceMethod2(); // 에러
	}

	static void staticMethod1() {
		System.out.println(cv);
//      System.out.println(iv); // 에러. 클래스메서드에서 인스턴스변수를 사용불가.
	}

	void instanceMethod1() {
		System.out.println(cv);
		System.out.println(iv); // 인스턴스메서드에서는 인스턴스변수를 바로 사용가능.
	}

	static void staticMethod2() {
		staticMethod1();
//      instanceMethod1(); // 에러. 클래스메서드에서는 인스턴스메서드를 호출할 수 없음.
	}

	void instanceMethod2() { // 인스턴스메서드에서는 인스턴스메서드와 클래스메서드
		staticMethod1(); // 모두 인스턴스 생성없이 바로 호출이 가능하다.
		instanceMethod1();
	}
}

📃static/인스턴스 예제 (2)

class Data{int x;}

public class ReferenceParamEx {
	public static void main(String[] args) {
		Data d = new Data();
		d.x = 10;
		System.out.println("main() : x = " + d.x);
	
		
//		change_basic(d.x);
		change(d);
		
		System.out.println("After change");
		System.out.println("main() + x = " + d.x);
		
		
	}
	static void change_basic(int x) {
		x = 1000;
		System.out.println("change_basic() : x = " + x);
	}
	
	static void change(Data d) {
		d.x = 1000;
		System.out.println("change() : x = " + d.x);
	}
}

 

💡재귀함수

📃재귀함수 예제

public class FactorialTest {
		public static void main(String[] args) {
			int result = factorial(5);
			
			System.out.println(result);
		}
		
		static int factorial(int n) {
			int result = 0;
			
			if(n==1) {
				result = 1;
			}
			else {
				result = n * factorial(n-1);
			}
			
			return result;
		}
}
728x90
반응형

댓글