참고
자바의 정석
자바로 프로그램 작성하기
Hello.java
public class Hello {
public static void main(String[] args) {
System.out.println("Hello World!");
}
}

- 자바에서 모든 코드는 반드시 클래스 안에 존재
- 클래스는 반드시 패키지안에 존재
- public static void main(String[] args)는 다른언어의 main 메서드이다.
- 이 부분은 자바 프로그램의 시작점이다.
- 모든 클래스가 main 메서드를 가지고 있어야 하는것은 아니지만, 하나의 자바 애플리케이션에는
main 메서드를 포함한 클래스가 반드시 하나는 있어야 한다.
- 하나의 소스 파일에 하나의 클래스만을 정의하는것이 일반적이지만 여러개가 있을 수도 있다.
- 주의할 점은 소스파일의 이름은 public class의 이름과 일치해야한다.
- 만약 public class가 없는 경우 class 이름 중에 하나로 해도 무방하다.
- 하나의 소스파일에 둘 이상의 public class가 존재하면 안된다.
- 소스파일 이름과 public class의 이름은 대소문자까지 일치해야한다.
자주 발생되는 에러와 해결법
일단 에러를 만나면 디버깅을 해보고 그래도 힘들면 구글링이나 chat-gpt한테 물어보자.
- cannot find symbol 또는 cannot resolve symbol
- 지정된 변수나 메서드를 찾을 수 없다는 뜻
- 선언되지 않은 변수나 메서드를 사용하거나 변수 또는 메서드 이름을 잘못 사용한 경우
- 대소문자의 일치여부도 꼼꼼하게 확인
- ';' expected
- 세미콜론이 필요한 곳에 없다는 뜻
- 자바의 모든 문장의 끝에는 ;을 붙여줘야한다.
- 일종의 마침표
- Exception in thread 'main' java.lang.NoSuchMethodError: main
- main 메서드를 찾을 수 없다라는 뜻
- public static void main(String[] args)에 오타가 존재하는 경우 발생
- 하지만 IDE에 도움으로 거의 에러를 만날 경우는 드물다.
- Exception in thread 'main' java.lang.NoSuchMethodError: Hello
- Hello라는 클래스를 찾을 수 없다라는 뜻
- 클래스 'Hello'라는 철자, 특히 대소문자를 확인해보고 이상이 없으면 클래스파일
생성 여부를 확인해보자.
- 그래도 에러가 나오면 클래스패스의 설정이 바르게 되었는지 확인해보자.
- illegal start of expression
- 문장에 문법적인 오류가 발생할 때 오류가 나온다.
- 괄호나 중괄호를 열고서 닫지 않거나 수식이나 문법적인 오류 또는 public이나
static과 같은 키워드를 잘못 사용한 경우에도 발생한다.
- class, interface, or enum expected
- 보통 괄호의 개수가 일치하지 않는 경우에 발생한다.
에러 메세지를 잘 읽고 해당 부분의 코드를 살펴본다.
이상이 없으면 해당 코드의 주위도 함께 살펴본다.
그래도 이상이 없으면 에러 메세지는 잊고 기본적인 부분을 재확인한다.
대부분 사소한 경우가 많다.
의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트를 해본다.
자바 프로그램 실행과정
- 프로그램의 실행에 필요한 클래스파일을 로드한다.
- 클래스 파일을 검사한다. (파일형식, 악성코드 체크)
- 지정된 클래스에 main 메서드를 호출한다.
- 프로그램 종료후에 사용했던 자원을 반납한다.
주석
- 일종의 설명문
- 주석을 이용해서 프로그램 코드에 대한 설명을 덧붙여 놓으면 프로그램을 이해하는데 많은 도움이 된다.
- 주석 부분은 프로그램이 실행하지 않는다.
- 단, 큰따옴표 안에 주석을 쓰면 문자열로 인식이 되어서 주석 효력이 없어진다.
범위주석: /* */ 사이의 내용은 주석으로 처리된다.
한줄 주석: // 부터 라인 끝까지의 내용은 주석으로 간주된다.