static에 대한 개념을 책으로 수백번 찾아 보는것보다는 코드로 이해하는게 100배 나았던 경험이 있다.
코드로 한번에 static 개념을 이해해보자.
우선 가져가야 하는 큰 개념은 아래와 같다.
```
1) 온라인 컴파일러(Repl.it or 프로그래머스 에서 제공하는 컴파일러 등)가
시작 함수를 main class의 main method를 지정 해야 한다. 그렇기에, 초기 프로그램 실행 시 시작 함수 (main method)를 호출해야만 한다.
2) main method가 memory에 있어야 한다.
(그래야 실행되니까)
3) memory(메모리)에 있으려면?
-1) static으로 선언을 하거나
-2) new Class()(생성자 형태로)
```
형태로 만들어야 한다.
이때 클래스이름이 무조건 Main일 필요는 없다. 하지만 메소드는 무조건 static main으로 줘야한다.
코드로 살펴보기전 코딩테스트를 위한 기본 프로세스
: 일반적으로 코딩 테스트를 준비하는 사람들은 온라인ide를 이용하여 먼저 풀고 난 뒤에, 해당 코딩 테스트 사이트에다 옮겨 적는 프로세스를 거친다. 또한 테스트 케이스를 작성하여 검증 해보는 작업 또한 거친다. 그렇기에 이 글은 온라인ide(repl.it 등..) -> 온라인 코딩 테스트 서버(프로그래머스, 백준 등..)로 사용하는 순서로 글을 풀이하였다.
(1) 온라인 IDE(rep.it)
아! 메모리에 올라가기 위해서 static 이라는 키워드를 사용했구나. 그래야 호출이 되니까
(2) 프로그래머스
어?. rep.it과 다르게 왜 static이 없을까? 그냥 프로그래머스에 있는 컴파일러가 class Solution 클래스 안에 static으로 선언 안해도 되게끔 설정 해놨나보네 아마 static main() method이 생략되어있나 보구나
[실제 코드로 살펴보기]
해당 문제를 읽고 한번 생각해보자!(못풀어도 괜찮다. static 개념만 가져가면 되니까)
(1)
(어 뭐야.. 이렇게 해서 프로그래머스에서 제출 할 때는 잘 됬는데?..)
(오류창 보니까 could not find or load main class Main이 보인다.!!)
아.. 메모리에 안 올렸구나.
(2)
: 프로그래머스에서는 잘만 실행되겠지!
그렇다면 (1)의 경우를 어떻게 해야 온라인 ide에서 실행되게끔 만들 수 있을까?
(3)
다시 repl.it 으로 넘어가자 만약 하나의 main class 안에 아래와 같이 하면 검증까지 되니 함수에 static을 올리고 테스트케이스를 작성해보면 되겠네
(4)
: 만약 main을 분리한다면 이리 쓰고 검증까지 해야겠구나.
// 이게 생략!
class Main {
public static void()
{
Solution sol = new solution();
check(sol.solution());
}
}
참고1)
'* Web > [Back] Java' 카테고리의 다른 글
[자바 Java] 쉽게 이해하는 가비지 컬렉션(Garbage Collection) 개념 (0) | 2021.08.26 |
---|---|
[Java 자바] 클래스(class) 개념과 학습방향 한방에 이해하기 (0) | 2021.07.04 |
[Java 자바] 문자열에서 ==와 equals() (0) | 2021.06.19 |
[Java] 자바 : 클래스에서 객체 생성을 막는 abstract (0) | 2021.03.22 |
[Java] 자바 : 상속을 금지하는 final (0) | 2021.03.22 |
댓글