본문으로 바로가기

static 메소드(함수)

category Java 2024. 4. 28. 14:47

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

 

주요 특징 정리

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

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

 

 

6개의 수를 랜덤으로 받는 로또게임 만들기

package basic.ex13;

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");

	} // end of main

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

		// static 함수안에 멤버 변수를 사용할 수 없다.
		// 메모리가 뜨는 순서 !!
//		System.out.println("ver : " + version);
		// 자바 도구 -- 표준 API
		// 난수 발생기 -> 랜덤적인 값 생성
		Random random = new Random();
		int resultNumber = random.nextInt(45) + 1; // 0 ~~ 44

		return resultNumber;
	}
}

 

package basic.ex13;

public class LottoGame1 {
	
	public static void main(String[] args) {
		
		// static 변수 == 클래스 변수 라고도 불린다.
		
		int gameNumber1 = LottoNumberMaker.makeNumber();		
		int gameNumber2 = LottoNumberMaker.makeNumber();		
		
		System.out.print(gameNumber1 + "\t");
		System.out.print(gameNumber2 + "\t");
		
		// 오름 차순으로 정렬해보기
		// 만약 1상자 2상자보다 크다면 어떤 행동을 하라
		// 단 변수에 값을 담고 출력 하세요.
		
		// 예상 1box = 5, 2box = 3
		int tempBox = 0;
		if(gameNumber1 > gameNumber2) {
			tempBox = gameNumber1; 
			gameNumber1 = gameNumber2;
			gameNumber2 = tempBox;
		}
		System.out.println();
		System.out.println("-----------------");
		
		System.out.print(gameNumber1 + "\t");
		System.out.print(gameNumber2 + "\t");
		
		
	} // end of main

} // end of class

package basic.ex13;

public class LottoGame3 {

	public static void main(String[] args) {

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

		int tempBox = 0;
		// 테스트 값 : 5, 1, 9, 7, 2, 3

		for (int pass = 1; pass <= 6; pass++) {

			if (gameNumber1 > gameNumber2) {
				tempBox = gameNumber1;
				gameNumber1 = gameNumber2;
				gameNumber2 = tempBox;
			}
			if (gameNumber2 > gameNumber3) {
				tempBox = gameNumber2;
				gameNumber2 = gameNumber3;
				gameNumber3 = tempBox;
			}
			if (gameNumber3 > gameNumber4) {
				tempBox = gameNumber3;
				gameNumber3 = gameNumber4;
				gameNumber4 = tempBox;
			}
			if (gameNumber4 > gameNumber5) {
				tempBox = gameNumber4;
				gameNumber4 = gameNumber5;
				gameNumber5 = tempBox;
			}
			if (gameNumber5 > gameNumber6) {
				tempBox = gameNumber5;
				gameNumber5 = gameNumber6;
				gameNumber6 = tempBox;
			}

		}

		System.out.println(gameNumber1);
		System.out.println(gameNumber2);
		System.out.println(gameNumber3);
		System.out.println(gameNumber4);
		System.out.println(gameNumber5);
		System.out.println(gameNumber6);

	} // end of main
}

 

package basic.ex13;

import java.util.Random;

public class LottoGame4 {

	// 인스턴스에 속하지 않는 함수 만들기 
	public static int[] makeNumbers() {
		int[] numbers = new int[6];
		Random random = new Random();

		
		// 중복된 랜덤 1 ~ 45 숫자가 나온다면 
		// 다시 반복문을 돌려서 중복 안되게 만들어야 한다. 
		for(int i = 0; i < 6; i++) {
			numbers[i] = random.nextInt(45) + 1;
		//  j = 0 , j < 0
			for(int j = 0; j < i; j++) {
				
			}
		}
		
		return numbers;
	}
	
}

'Java' 카테고리의 다른 글

Swing - FlowLayout  (0) 2024.04.29
Exception(예외처리)  (0) 2024.04.29
static 변수  (0) 2024.04.28
ver 0.0.1 Starcraft  (0) 2024.04.27
인터페이스에 대한 고찰  (0) 2024.04.25