이제부터는 자바로 프로그램을 작성하는 방법에 대해 알아보고 자바의 문법들에 대해서 알아보도록 하겠습니다.
이번 포스트에서는 프로그래밍 언어의 유구한 전통 Hello world!
를 출력하면서 자바 프로그래밍을 시작해보도록 하겠습니다.
개발 환경은 인텔리제이, Java17을 사용했습니다. 따로 이야기가 없는 한 이 포스트 시리즈에선 계속 이 환경으로 실습을 진행할 예정입니다.
프로젝트 생성은 인텔리제이를 기준으로 작성되었습니다.
인텔리제이 설치 후 처음 켜면 아래와 같은 화면이 나옵니다.new project를 눌러서 새 프로젝트를 생성해주세요.
이름과 경로는 자유롭게 설정해주세요. 옆에 생성옵션으로 여러가지가 있는데, 지금은 기초를 다루니 그냥 빈 프로젝트로 만들겠습니다. 마찬가지로 Git도 당장은 패스하겠습니다. 이름과 경로 설정 후 Create를 누르면 IDE에서 필요한 프로젝트 세팅을 해주면서 프로젝트 생성이 완료됩니다.
위의 프로젝트 생성을 따라했거나, 본인만의 환경에서 프로젝트를 만들었다면 HelloWorld.java
파일을 생성합니다. IDE 생성 메뉴를 이용해도 좋고, 직접 만들어도 좋습니다.
파일을 생성했다면 아래와 같이 코딩합니다.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
코드를 적고 실행(Run)을 하면 다음과 같이 제대로 결과가 나타납니다.
그러면 이 세 줄 짜리 코드를 뜯어보겠습니다.
public class Hello {}
이 부분은 자바에서 클래스를 선언하는 부분입니다.
추후에 나올 package나 import 구문을 제외하고 모든 자바 코드는 클래스 블록(중괄호 내부)에 적습니다.
코드들을 보다보면 클래스를 작성할 때 어디서는 public class
라고 작성하고, 어디서는 class
라고 작성합니다.
두 명령간의 차이는 무엇일까요? 그 답은 클래스의 이름과 연관이 있습니다.
public class
명령으로 클래스를 정의하는 경우 클래스의 이름은 반드시 파일명과 일치해야합니다. 반대로 class
명령으로 정의하는 경우엔 일치하지 않아도 괜찮습니다.
public class A {} //반드시 파일명은 A.java이여야 한다!!!
class B //파일명은 B.java가 아니어도 괜찮다!!!
일반적으로 하나의 소스 코드에 하나의 클래스를 적는 것이 원칙이지만 둘 이상의 클래스를 정의할 수도 있습니다. 이때도 public class
로 정의한다면 파일명이 public class
로 정의된 클래스 명과 일치해야합니다.
public static void main(String[] args) {}
main 메소드
입니다. 이 부분은 항상 똑같이 적어야합니다. 왜냐하면main 메소드
는 자바를 실행할 때java.exe
에 의해서 호출되도록 미리 약속된 메소드이기 때문입니다.모든 클래스가 main 메소드를 가지지는 않아도 되지만, 자바 프로그램 내부에 반드시 하나는 존재하여야 합니다.
System.out.println("Hello world!");
Hello world!
라는 문구를 출력하는 구문입니다.
System
은 자바에서 표준 입출력을 지원하기 위한 클래스입니다.out
은PrintStream
객체의 인스턴스입니다. 그리고println()
메소드는PrintStream
객체의 메소드로 로그를 출력하고 개행까지 수행하는 메소드입니다. 당장 이해가 가지않는다면, 지금은 출력하고 엔터!정도로만 이해해도 좋습니다.세미콜론
;
은 자바에서 한 줄의 명령이 종료되었다고 알리는 역할을 합니다. 코드 블럭{}
에는 붙이지 않지만, 일반 명령줄의 경우에는 반드시 붙여야합니다. 붙이지 않고 문장을 마무리짓는 경우 에러가 발생합니다.
System이라는 표준 입출력 클래스는 java.lang
라는 패키지에 들어있습니다. 그렇기 때문에 원래는 패키지를 import
해주어야합니다.
import java.lang.System;
public class Hello {
public static void main(String[] args) {
System.out.println("Hello world!");
}
}
하지만 정말 편리하게도 java.lang
패키지는 자주 사용되는 패키지이기 때문에 기본적으로 *8처음부터 로딩**되어 있습니다. 따라서 java.lang에 대한 import
구문을 생략하고 사용할 수 있습니다.
주석(comment)
은 실행에 영향을 주지않는 설명문입니다.
자바에서 주석은 다음과 같이 달 수 있습니다.
//한 줄 주석
/*
여러
줄
주석
*/
앞으로 진행될 문법이나 오늘 다룬 내용들 몇 가지는 Java17 공식 문서에서 가져왔습니다.
깔끔하고 명확하게 잘 정리되어 있기 때문에 참조하시면 좋습니다.
https://docs.oracle.com/en/java/javase/17/docs/api/