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 |