본문 바로가기

Java

static 메소드 (함수)

static 메소드(함수) 란?

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

 

주요 특징 정리

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

연습문제.

1. 로또 번호 만들기 - 일단 2개의 번호를 오름차순으로 정렬)

package basic.ex13;

// 가지고 오다. 수입하다. 
import java.util.Random;

public class LottoNumberMaker {
	
	// 멤버 변수 
	private String version = "1.0.0";
	
	// main 함수 
	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);
		Random random = new Random(); 
		int resultNumber = random.nextInt(45) + 1; // 0 ~~~~ 44
		return resultNumber; 
	}
	
}
package basic.ex13;

public class LottoGame {

	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) {
			// 0    =      5     -> temp 5
			tempBox = gameNumber1;
			
			//    3
			gameNumber1 = gameNumber2;
			
			//    5
			gameNumber2 = tempBox;
			
		}
		System.out.println();
		System.out.println("-------------------");
		// 정렬 -> 3, 5
		System.out.println(gameNumber1);
		System.out.println(gameNumber2);
        
	} // end of main 
    
} // end of class

 

2. 전체 1 ~ 6까지 if 문을 사용해서 랜덤 값 오름차순으로 정렬하기 - for문 사용 금지

package basic.ex13;

public class LottoGame2 {

	public static void main(String[] args) {
		// static 변수 --> 클래스 변수라고도 불린다. 
		
		int gameNumber1 = LottoNumberMaker.makeNumber();
		int gameNumber2 = LottoNumberMaker.makeNumber();
		int gameNumber3 = LottoNumberMaker.makeNumber();
		int gameNumber4 = LottoNumberMaker.makeNumber();
		int gameNumber5 = LottoNumberMaker.makeNumber();
		int gameNumber6 = LottoNumberMaker.makeNumber();

		// 전체 1 ~ 6 까지 나온 결과값을 오름 차순으로 정렬 
		// 단, 중복 값은 무시! 
		
		// 수식을 작성해주세요
		// 만약 if --> 반복문 사용 금지 if문 6개로 구성해주세요
		// 
		int tempBox = 0;
		// 5, 1, 9, 7, 2, 3
		
		//   5         >     1  
		if(gameNumber1 > gameNumber2) {
			// 5 
			tempBox = gameNumber1;
			// 1      <--      1      
			gameNumber1 = gameNumber2;
			// 5      <--   5
			gameNumber2 = tempBox;
		}
        
		// 1,5, 9, 7, 2, 3
		//     5       >     9   
		if(gameNumber2 > gameNumber3) {
			tempBox = gameNumber2;
			gameNumber2 = gameNumber3;
			gameNumber3 = tempBox;
		}
		
		// 1, 5, 9, 7, 2, 3
		//     9       >    7 
		if(gameNumber3 > gameNumber4) {
			// 9      <--     9 
			tempBox = gameNumber3;
			// 7       <---  7
			gameNumber3 = gameNumber4;
			// 9     <---  9 
			gameNumber4 = tempBox;
		}
		
		// 1, 5, 7, 9, 2, 3
		//    9              2
		if(gameNumber4 > gameNumber5) {
			// 9    <---  9
			tempBox = gameNumber4;
			// 2      <--  2
			gameNumber4 = gameNumber5;
			// 2      <--  9 
			gameNumber5 = tempBox;
		}
		
		// 1, 5, 7, 2, 9, 3
		//   9         >      3  
		if(gameNumber5 > gameNumber6) {
			// 9   <--   9
			tempBox = gameNumber5;
			// 3     <--    3
			gameNumber5 = gameNumber6;
			// 9     <---  9
			gameNumber6 = tempBox;
		}
		
		// 1, 5, 7, 2, 3, 9
		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 
}

 

3. 반복되는 값 for문으로 변경

package basic.ex13;

public class LottoGame3 {

	public static void main(String[] args) {

		// static 변수 -> 클래스 변수라고도 불린다.
		int gameNumber1 = LottoNumberMaker.makeNumber();
		int gameNumber2 = LottoNumberMaker.makeNumber();
		int gameNumber3 = LottoNumberMaker.makeNumber();
		int gameNumber4 = LottoNumberMaker.makeNumber();
		int gameNumber5 = LottoNumberMaker.makeNumber();
		int gameNumber6 = LottoNumberMaker.makeNumber();

		// 전체 1 ~ 6 까지 나온 결과값을 오름차순으로 정렬
		// 단, 중복값 제외

		// 수식을 작성해주세요

		int temp = 0;
		// 5, 1, 9, 7, 2, 3 가정

		// 반복 횟수 : 6번
		for (int pass = 1; pass <= 6; pass++) {
			//	     5      >     1
			if (gameNumber1 > gameNumber2) {
				// 5
				temp = gameNumber1;
				// 1
				gameNumber1 = gameNumber2;
				// 5
				gameNumber2 = temp;
			}
			// 1, 5, 9, 7, 2, 3 
			//      5       >     9
			if (gameNumber2 > gameNumber3) {
				// 5
				temp = gameNumber2;
				// 9
				gameNumber2 = gameNumber3;
				// 5
				gameNumber3 = temp;
			}
			// 1, 5, 9, 7, 2, 3 
			//       9      >     7
			if (gameNumber3 > gameNumber4) {
				// 9
				temp = gameNumber3;
				// 7
				gameNumber3 = gameNumber4;
				// 9
				gameNumber4 = temp;
			}
			//        7     >     2
			if (gameNumber4 > gameNumber5) {
				// 7
				temp = gameNumber4;
				// 2
				gameNumber4 = gameNumber5;
				// 7
				gameNumber5 = temp;
			}
			//       7      >     3
			if (gameNumber5 > gameNumber6) {
				// 7
				temp = gameNumber5;
				// 3
				gameNumber5 = gameNumber6;
				// 7
				gameNumber6 = temp;
			}
		}

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

	}// end of main

}// end of class

 

728x90

'Java' 카테고리의 다른 글

메서드 오버로딩 ( Overloading )  (0) 2024.04.23
배열 ( Array )  (0) 2024.04.22
static 변수  (0) 2024.04.19
this  (0) 2024.04.19
접근 제어 지시자 ( Access Modifier )  (0) 2024.04.17