본문으로 건너뛰기
안동민 개발노트 아이콘

안동민 개발노트

본문 시작
1장 : Java 설치와 첫 프로그램

실행 인자와 첫 Study Log

명령 뒤에 입력한 값을 String[] args로 받고 입력 유무를 확인하는 작은 학습 기록 프로그램을 만듭니다.

지금까지 프로그램 안의 문자열은 소스에 직접 적었습니다. 실행 인자를 사용하면 소스를 다시 고치지 않고 명령에서 값을 전달할 수 있습니다.

실행 명령은 java -cp out <클래스이름> <전달할 값> 모양입니다. 먼저 아래에서 클래스를 작성하고 컴파일한 뒤 실행합니다. 클래스 이름 뒤의 값이 실행 인자이며, Java는 이 값들을 문자열 목록으로 만들어 mainString[] args에 전달합니다.

args의 가장 작은 사용법

String[]는 여러 문자열을 순서대로 담는 배열 타입입니다. 배열은 ch3에서 자세히 배우므로 지금은 두 규칙만 사용합니다.

  • args.length는 전달된 문자열 개수입니다.
  • args[0]은 첫 번째 문자열입니다. 위치 번호는 0부터 시작합니다.

다음 파일을 만듭니다.

src/ArgumentEcho.java — 완전한 파일
public class ArgumentEcho {
    public static void main(String[] args) {
        System.out.println("count=" + args.length);
        System.out.println("first=" + args[0]);
    }
}
javac -d out src/ArgumentEcho.java
java -cp out ArgumentEcho Java
count=1
first=Java

문자열 옆의 +는 두 값을 이어 하나의 출력 문자열로 만듭니다. 계산과 문자열 결합의 자세한 규칙은 ch2에서 배웁니다.

인자가 없을 때 먼저 확인한다

인자 없이 실행하면 args.length는 0인데 args[0]을 읽으려 해서 실행 중 오류가 납니다. 읽기 전에 개수를 확인해야 합니다.

if는 괄호 안의 조건이 참일 때만 중괄호 안을 실행하는 문장입니다. ch2에서 조건식을 자세히 배우지만 여기서는 “값이 하나도 없는가”만 검사합니다. return은 현재 main 실행을 끝냅니다.

src/ArgumentEcho.java — 안전하게 고친 완전한 파일
public class ArgumentEcho {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("사용법: java -cp out ArgumentEcho <topic>");
            return;
        }

        System.out.println("count=" + args.length);
        System.out.println("first=" + args[0]);
    }
}
javac -d out src/ArgumentEcho.java
java -cp out ArgumentEcho
java -cp out ArgumentEcho variables

첫 실행은 사용법을 출력하고 안전하게 끝납니다. 둘째 실행은 variables를 출력합니다.

첫 Study Log

학습 주제 하나를 받아 기록 모양으로 출력하는 프로그램을 만듭니다. 아직 값을 저장하거나 합산하지는 않습니다.

src/StudyLog.java — 완전한 파일
public class StudyLog {
    public static void main(String[] args) {
        if (args.length == 0) {
            System.out.println("사용법: java -cp out StudyLog <topic>");
            return;
        }

        System.out.println("학습 주제: " + args[0]);
        System.out.println("기록 완료");
    }
}
javac -d out src/StudyLog.java
java -cp out StudyLog Java
학습 주제: Java
기록 완료

이 프로그램에는 하나의 입력 경계가 있습니다. 인자가 없으면 사용법을 보여 주고, 있으면 첫 값을 사용합니다. 입력이 여러 단어라면 PowerShell에서 따옴표로 하나의 인자로 묶습니다.

java -cp out StudyLog "Java 기초"

지금 이해할 것과 뒤에서 배울 것

public static void main(String[] args)에는 아직 배우지 않은 단어가 남아 있습니다. 지금 필요한 뜻과 정식 학습 위치를 구분합니다.

표현지금 필요한 뜻자세히 배우는 곳
class코드를 묶는 프로그램 단위ch4
main실행 시작점ch3 메서드
static객체를 만들기 전에도 실행기가 호출 가능ch6
String[] args명령에서 받은 문자열 목록ch3 배열
if, ==조건이 맞을 때만 실행ch2

모르는 문법을 숨기지 않되 한 번에 내부 규칙까지 외우게 하지 않습니다. 각 장에서 더 작은 예제로 다시 열어 봅니다.

연습 문제

Welcome.java를 작성하세요.

  • 인자가 없으면 사용법: Welcome <name>을 출력합니다.
  • 인자가 있으면 안녕하세요, <name>을 출력합니다.
  • 두 경우 모두 실행 중 오류 없이 끝나야 합니다.
javac -d out src/Welcome.java
java -cp out Welcome
java -cp out Welcome 안동민

다음 장에서는 안동민, 45, true 같은 값을 변수에 담고 계산·조건·반복에 사용합니다.