2024. 12. 13. 13:00ㆍJAVA
안녕하세요. 진득 코딩입니다. 저번 시간에는 이클립스를 설치하고 자바 언어를 사용할 환경을 세팅하는 포스팅을 하였습니다.
이번 시간에는 간단한 자바 프로그램 작성법과 주석에 대해서 살펴보도록 하겠습니다.
자바로 프로그램 작성하기
자바로 프로그램을 작성할 때 여러 규칙이 있습니다.
그중에 하나가 바로 자바에서 모든 코드는 반드시 클래스 안에 존재해야 하며, 서로 관련된 코드들을 그룹으로 나누어 별도의 클래스를 구성한다는 것입니다.
클래스를 작성하는 방법은 키워드 'class' 다음에 클래스의 이름을 적고, 클래스의 시작과 끝을 의미하는 괄호 {} 안에 원하는 코드를 넣으면 됩니다.
위 코드의 'public static void main(String[] args)'는 main 메서드의 선언부인데, 프로그램이 실행할 때 'java.exe'에 의해 호출될 수 있도록 미리 약속된 부분이므로 항상 똑같이 적어주어야 한다.
여기에서 괄호 {}는 메서드의 시작과 끝을 의미하며, 이 괄호 사이에 작업할 내용을 작성해 넣으면 됩니다.
Java 애플리케이션은 main 메서드의 호출로 시작해서 main 메서드의 첫 문장부터 마지막 문장까지 수행을 마치면 종료됩니다.
하나의 Java 애플리케이션에는 main 메서드를 포함한 클래스가 반드시 하나는 있어야 합니다.
그 이유는 main 메서드는 Java 애플리케이션의 시작점이므로 main 메서드 없이는 Java 애플리케이션은 실행될 수 없기 때문입니다.
작성된 Java 애플리케이션을 실행할 때는 'Java.exe' 다음에 main 메서드를 포함한 클래스의 이름을 적어줘야 합니다.
하나의 소스 파일에 둘 이상의 클래스를 정의하는 것도 가능하지만, 소스 파일의 이름은 public class의 이름과 일치해야 합니다.
올바른 작성 예 | 설명 |
![]() |
public class가 있는 경우, 소스 파일의 이름은 반드시 public class의 이름과 일치해야 한다. |
![]() |
public class가 하나도 없는 경우, 소스 파일의 이름은 다른 클래스 이름 모두 가능하다. |
잘못된 작성 예 | 설명 |
![]() |
하나의 소스 파일에 둘 이상의 public class가 존재하면 안된다. 각 클래스를 별도의 소스 파일에 나눠서 저장 하거나 둘 중의 한 클래스에 public을 붙이지 않아야 한다. |
![]() |
소스 파일의 이름이 public class의 이름과 일치하지 않는다. 소스파일의 이름을 'test.java'로 변경해야 맞다. |
![]() |
소스 파일의 이름과 public class의 이름이 일치하지 않는다. 대소문자를 구분하므로 대소문자까지 일치 해야 한다. 그래서 소스 파일의 이름에서 'a'를 'A'로 바꿔야 한다. |
주석
- 주석을 이용해서 프로그램 코드에 대한 설명을 적절히 덧붙여 놓아 프로그램을 이해하는데 용이하기 때문에 사용합니다.
- 그 외에도 프로그램의 작성자, 작성 일시, 버전과 그에 따른 변경 이력 등의 정보를 제공할 목적으로도 사용합니다.
- 주석을 작성하는 방법은 '/*'와 '*/' 사이에 주석을 넣는 방법과 앞에 '//'를 붙이는 방법이 있습니다.
- '/*'와 '*/' 사이의 내용을 주석으로 간주하는 방법을 범위 주석이라고 합니다.
- '//'부터 라인 끝까지의 내용을 주석으로 간주하는 방법을 한 줄 주석이라고 합니다.
위 예시에서 초록색으로 표시된 부분들이 모두 주석 부분입니다.
해당 부분들은 컴파일러가 무시하고 건너뛰는 부분입니다.
주석을 사용할 때 주의할 점은 문자열을 의미하는 큰따옴표("") 안에 주석이 있을 때는 주석이 아닌 문자열로 인식됩니다.
위와 같이 큰따옴표 ("") 안에 주석을 입력하자 콘솔창에 그대로 출력되는 것을 확인할 수 있습니다.
자주 발생하는 에러와 해결 방법
개발을 하게 되면 수많은 에러들을 마주하게 됩니다.
이때 이러한 에러들을 잘 해결하는 것이 좋은 개발자이고 이러한 과정에서 성장한다고 생각합니다.
본격적으로 프로그래밍을 하기 전에 자주 발생하는 에러들을 살펴보고 그에 대한 해결 방법들을 살펴보도록 하겠습니다.
- cannot find symbol 또는 cannot resolve symbol
- 지정된 변수나 메서드를 찾을 수 없다는 뜻입니다. 선언되지 않은 변수나 메서드를 사용하거나, 변수 또는 메서드의 이름을 잘못 사용한 경우에 발생합니다.
- 이때 철자뿐만 아니라 대소문자의 일치 여부도 꼼꼼하게 확인해야 합니다. - ';' expected
- 세미콜론 (;)이 필요한 곳에 없다는 뜻입니다
- 자바의 모든 문장의 끝에는 ';'을 붙여주어야 하므로 ';'이 없는 코드를 확인해야 합니다. - Exception in thread "main" java.lang.NoSuchMethodError: main
- main 메서드를 찾을 수 없다는 뜻입니다.
- 실제로 클래스 내에 main 메서드가 존재하지 않거나 메서드의 선언부 'public static void main(String[] args)'에 오타가 존재하는 경우에 발생합니다.
- 이때 main 메서드가 클래스에 정의되어 있는 지확인하고, 정의되어 있다면 main 메서드의 선언부에 오타가 없는지 확인합니다.
- 참고로 args는 매개변수의 이름이므로 args 대신 argv나 arg와 같이 다른 이름을 사용할 수도 있습니다. - Exception in thread "main" java.lang.NoClassDefFoundError: test
- test라는 클래스를 찾을 수 없다는 뜻입니다.
- 클래스 'test'의 철자나 대소문자를 확인합니다.
- 오타가 없다면 클래스파일(*.class)이 생성되었는지 확인합니다. - illegal start of expression
- 직역하면 문장(또는 수식, expression)의 앞부분이 문법에 맞지 않다는 의미입니다.
- 의역하면 문장에 문법적 오류가 있다는 뜻입니다.
- 괄호 '('나 '{'를 열고서 닫지 않거나, 수식이나 if문, for문 등에 문법적 오류가 있을 때 발생합니다.
- 또는 public이나 static과 같은 키워드를 잘못 사용한 경우에도 발생합니다. - class, interface, or enum expected
- 키워드 class나 interface 또는 enum이 없다는 의미입니다.
- 보통 괄호'{'의 개수가 일치하지 않는 경우에 발생합니다.
- 열린 괄호와 닫힌 괄호의 개수가 같은지 확인해서 오류를 확인합니다. - 에러 발생 시 해결 행동 요령
1. 에러 메세지를 잘 읽고 해당 부분의 코드를 잘 살펴봅니다.
이상이 없으면 해당 코드의 주위(윗줄과 아랫줄)도 함께 살펴봅니다.
2. 그래도 이상이 없으면 에러 메시지는 잊어버리고 기본적인 부분을 재확인합니다.
대부분의 에러는 사소한 경우가 많습니다.
3. 의심이 가는 부분을 주석처리하거나 따로 떼어내서 테스트합니다.
본격적인 프로그래밍을 하기 전에
- 자바를 공부할 때에는 눈으로만 이해하지 말고, 반드시 직접 입력하고 실행 결과를 확인해 보는 것이 중요합니다.
- 객체지향 파트는 여러 번 반복해서 보는 것이 좋습니다.
- 객체지향 개념을 공부할 때 객체지향 개념 자체에 몰두하지 말아야 합니다. 객체지향 개념이 주가 아니라 프로그래밍 언어인 자바를 배우는 것을 항상 기억해야 합니다.
- 자바를 모두 공부하였다면 안드로이드나 웹프로그래밍(JSP, Spring)을 공부하면서 하루에 한 주제라도 꾸준히 복습해야 합니다. 지속적으로 조금씩이라도 반복해서 봐야만 실력이 쌓이게 됩니다. 하루에 10분이라도 복습해야 합니다.
- 문제를 풀 때는 항상 종이에 낙서하면서 하는 것이 좋다.
- 질문이 생긴다면 질문을 받는 사람 입장에서 답변하기 쉽게 하는 질문을 하도록 노력해야 합니다.
- 자바를 계속해서 공부하면서 길을 잃지 말아야 합니다.
- 또한 남과 비교하지 말고 꾸준히 공부해야 합니다.
- 질문을 부끄러워하지 않아야 합니다.
마지막 문단에 적은 글들은 '자바의 정석'의 저자이신 남궁성님이 말씀해 주신 팁들입니다.
남궁성님의 팁들처럼 사람마다 타고난 장점이 다르고 성장하는 속도가 모두 다릅니다.
남들과 비교하는 것이 아닌 어제의 자신과 오늘의 자신을 비교하면서 한발 한발 앞으로 나가시길 바라겠습니다.
이번 포스팅은 여기까지입니다. 끝까지 봐주셔서 감사합니다.😊
'JAVA' 카테고리의 다른 글
자바 변수의 타입에 대해서 알아보자 (0) | 2024.12.17 |
---|---|
자바에서의 변수에 대해 알아보자 (0) | 2024.12.16 |
IDE 이클립스를 설치해서 자바 개발 환경 구축해보자 (0) | 2024.12.12 |
jdk를 설치해서 자바 개발 환경을 세팅해보자 (0) | 2024.12.11 |
자바(Java Programming Language)에 대해 알아보자 (2) | 2024.12.10 |