컴파일과 실행의 전 과정을 확인합니다.
public class Hello {
public static void main(String[] args) {
System.out.println("Hello, Java");
// 출력: Hello, Java
}
}javac Hello.java → Hello.class 생성
java Hello → Hello, JavaString[] args가 실제로 무엇을 담는지 확인합니다. 실무 배치 프로그램(정해진 시간에 자동 실행되는 프로그램)은 대부분 이 방식으로 날짜나 옵션을 받습니다.
public class Greeting {
public static void main(String[] args) {
if (args.length == 0) {
System.out.println("사용법: java Greeting <이름>");
return;
}
String name = args[0];
System.out.println("안녕하세요, " + name + "님!");
}
}
// java Greeting
// 출력: 사용법: java Greeting <이름>
//
// java Greeting 김철수
// 출력: 안녕하세요, 김철수님!public이 아닌 클래스는 같은 파일에 여러 개 둘 수 있으며, 각각 별도 .class로 컴파일됩니다.
public class Main {
public static void main(String[] args) {
Printer p = new Printer();
p.print("주문 접수");
p.print("결제 완료");
}
}
class Printer {
void print(String message) {
System.out.println("[LOG] " + message);
}
}
// javac Main.java → Main.class, Printer.class 두 개 생성
// java Main
// 출력: [LOG] 주문 접수
// 출력: [LOG] 결제 완료실제 프로젝트는 파일이 여러 개입니다. *.java로 한 번에 컴파일합니다.
// 파일: Main.java
public class Main {
public static void main(String[] args) {
System.out.println(Version.current());
}
}// 파일: Version.java
public class Version {
static String current() {
return "app v1.0.0 (Java " + System.getProperty("java.version") + ")";
}
}
// javac *.java
// java Main
// 출력: app v1.0.0 (Java 21.0.x)일부러 오류를 내고 메시지를 해석합니다.
public class Broken {
public static void main(String[] args) {
int count = "10"; // 문자열을 정수 변수에 넣으려 함
System.out.println(count)
}
}
// javac Broken.java
// 출력:
// Broken.java:3: error: incompatible types: String cannot be converted to int
// int count = "10";
// ^
// Broken.java:4: error: ';' expected
// System.out.println(count)
// ^
// 2 errors두 오류 모두 파일:줄번호, 원인, 위치가 나옵니다. 3번째 줄은 타입이 맞지 않고, 4번째 줄은 세미콜론이 없습니다.