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 |