Java/Java

static 메서드 ( 함수 )

DDG9 2024. 4. 19. 15:31

static 메서드(함수)는 특정 클래스의 인스턴스에 속하지 않고 클래스 자체에 속합니다. 따라서 객체를 생성하지 않고도 클래스 이름을 통해 직접적으로 호출할 수 있습니다. static 메서드는 클래스의 모든 인스턴스가 공유하며, 주로 유틸리티 기능이나 공통 동작을 제공하는 데 사용됩니다.

 

주요 특징 정리

  • 객체 생성 없이 호출 가능
  • 인스턴스 변수에 접근 불가

※ static 메서드는 객체의 인스턴스 변수에 직접적으로 접근할 수 없습니다. 왜냐하면 static 메서드는 객체가 생성되기 전에 호출될 수 있기 때문에 해당 객체의 상태를 알 수 없기 때문입니다.

 

로또번호 생성기 예제

package basic.ch13;

import java.util.Random;

public class LottoNumberMaker {

	private String version = "1.0.0";
	
	public static void main(String[] args) {

		System.out.print(makeNumber() + "\t");
		System.out.print(makeNumber() + "\t");
		System.out.print(makeNumber() + "\t");
		System.out.print(makeNumber() + "\t");
		System.out.print(makeNumber() + "\t");
		System.out.print(makeNumber() + "\t");

	}

	// 인스턴스에 속하지 않는 함수 만들기
	public static int makeNumber() {

		// static 함수 안에 멤버 변수를 사용할 수 없다.
		// System.out.println("ver : " + version);

		Random random = new Random();
		int num = random.nextInt(45) + 1; // 0 ~~~~ 44
		return num;
	}
}
package basic.ch13;

public class LottoGame3 {

	public static void main(String[] args) {

		// 난수 6개 생성
		int gameNumber1 = LottoNumberMaker.makeNumber();
		int gameNumber2 = LottoNumberMaker.makeNumber();
		int gameNumber3 = LottoNumberMaker.makeNumber();
		int gameNumber4 = LottoNumberMaker.makeNumber();
		int gameNumber5 = LottoNumberMaker.makeNumber();
		int gameNumber6 = LottoNumberMaker.makeNumber();

		// 출력
		System.out.print(gameNumber1 + "\t");
		System.out.print(gameNumber2 + "\t");
		System.out.print(gameNumber3 + "\t");
		System.out.print(gameNumber4 + "\t");
		System.out.print(gameNumber5 + "\t");
		System.out.print(gameNumber6 + "\t");
		System.out.println();
		System.out.println("-------------------------------------------");

		// 중복 제거
		while (gameNumber1 == gameNumber2 || gameNumber1 == gameNumber3 || gameNumber1 == gameNumber4
				|| gameNumber1 == gameNumber5 || gameNumber1 == gameNumber6 || gameNumber2 == gameNumber3
				|| gameNumber2 == gameNumber4 || gameNumber2 == gameNumber5 || gameNumber2 == gameNumber6
				|| gameNumber3 == gameNumber4 || gameNumber3 == gameNumber5 || gameNumber3 == gameNumber6
				|| gameNumber4 == gameNumber5 || gameNumber4 == gameNumber6 || gameNumber5 == gameNumber6) {

			gameNumber2 = LottoNumberMaker.makeNumber();
			gameNumber3 = LottoNumberMaker.makeNumber();
			gameNumber4 = LottoNumberMaker.makeNumber();
			gameNumber5 = LottoNumberMaker.makeNumber();
			gameNumber6 = LottoNumberMaker.makeNumber();
		}

		// 출력
		System.out.print(gameNumber1 + "\t");
		System.out.print(gameNumber2 + "\t");
		System.out.print(gameNumber3 + "\t");
		System.out.print(gameNumber4 + "\t");
		System.out.print(gameNumber5 + "\t");
		System.out.print(gameNumber6 + "\t");
		System.out.println();
		System.out.println("-------------------------------------------");

		// 오름차순
		for (int i = 1; i <= 5; i++) {
			if (gameNumber1 > gameNumber2) {
				int tempBox = gameNumber1;
				gameNumber1 = gameNumber2;
				gameNumber2 = tempBox;
			}
			if (gameNumber2 > gameNumber3) {
				int tempBox = gameNumber2;
				gameNumber2 = gameNumber3;
				gameNumber3 = tempBox;
			}
			if (gameNumber3 > gameNumber4) {
				int tempBox = gameNumber3;
				gameNumber3 = gameNumber4;
				gameNumber4 = tempBox;
			}
			if (gameNumber4 > gameNumber5) {
				int tempBox = gameNumber4;
				gameNumber4 = gameNumber5;
				gameNumber5 = tempBox;
			}
			if (gameNumber5 > gameNumber6) {
				int tempBox = gameNumber5;
				gameNumber5 = gameNumber6;
				gameNumber6 = tempBox;
			}
		}

		// 출력
		System.out.print(gameNumber1 + "\t");
		System.out.print(gameNumber2 + "\t");
		System.out.print(gameNumber3 + "\t");
		System.out.print(gameNumber4 + "\t");
		System.out.print(gameNumber5 + "\t");
		System.out.print(gameNumber6 + "\t");
		System.out.println();
		System.out.println("----------------------------------------------");

	}
}

 

'Java > Java' 카테고리의 다른 글

배열의 활용 ( 도서 관리 프로그램 )  (0) 2024.04.22
배열 ( Array )  (0) 2024.04.22
static 변수  (0) 2024.04.19
this 의 3가지 사용방법  (0) 2024.04.18
접근 제어 지시자  (0) 2024.04.17