반응형

2.2 리터럴과 형 변환 – 정수/실수/문자 리터럴, 자료형 간의 묵시적/명시적 형 변환

숫자 하나 입력했을 뿐인데, 갑자기 에러가? 🤯 자바에서 ‘리터럴’과 ‘형 변환’ 제대로 이해하지 못하면 진짜 골치 아파요!

반응형

안녕하세요, 자바를 처음 배우는 여러분! 지난 시간엔 변수와 자료형의 개념을 배워봤죠. 오늘은 그 연장선으로, 변수에 값을 넣을 때 필수로 알아야 할 리터럴(literal)형 변환(type casting)에 대해 알아볼 거예요. "int num = 10.5;" 이런 코드에서 왜 오류가 나는지, 혹은 "char c = 65;"가 어떻게 동작하는지 궁금하셨던 적 있죠? 이 챕터에서 그 모든 궁금증을 해소해드릴게요. 실습 중심으로 쉽게 설명드릴 테니 끝까지 따라와 주세요! 😊

1. 리터럴이란 무엇인가요? 🔤

프로그래밍에서 리터럴(Literal)이란 말은 낯설지만, 사실 우리는 매번 사용하고 있어요. 리터럴이란 고정된 값 자체를 의미해요. 예를 들어, 숫자 10, 문자 'A', 문자열 "Hello" 이런 것들이 모두 리터럴이에요.

조금 더 쉽게 말하면, 개발자가 코드에 직접 입력한 값은 전부 리터럴이에요. 반대로 변수나 메서드를 통해 결과로 얻는 값은 리터럴이 아니죠.

📌 리터럴의 예시

리터럴 종류 예시 설명
정수형 리터럴 10, -5, 0 int, long 등 정수형 변수에 사용
실수형 리터럴 3.14, -0.5 float, double 등 실수형 변수에 사용
문자 리터럴 'A', '가' char 타입에 사용, 반드시 작은따옴표('')
문자열 리터럴 "Hello", "Java" String 클래스에서 사용
논리 리터럴 true, false boolean 타입에 사용

💡 꼭 알아두세요!

  • 정수형 리터럴은 기본적으로 int로 간주됩니다. long으로 저장하고 싶다면 숫자 뒤에 L 또는 l을 붙여야 해요.
  • 실수형 리터럴은 기본적으로 double 타입입니다. float으로 선언하려면 f 또는 F를 붙여야 해요.
  • char형 리터럴은 작은따옴표(' ')로 감싸야 하며, 반드시 하나의 문자만 포함해야 해요.

자, 여기까지가 리터럴의 기본이에요! 다음 섹션에서는 실제로 이런 리터럴들이 변수와 어떻게 어울리는지, 그리고 리터럴이 자료형과 어떻게 관계되는지 살펴볼게요!

2. 정수, 실수, 문자, 논리 리터럴의 종류 📊

자바에서는 다양한 형태의 리터럴을 사용할 수 있어요. 변수에 대입하는 값이 숫자인지, 문자나 문자열인지, 또는 true/false인지에 따라 각기 다른 형식과 규칙이 적용됩니다. 이 섹션에서는 각각의 리터럴을 유형별로 정리해볼게요.

📌 기본 리터럴 종류와 표현 방식

리터럴 유형 예시 설명
정수형 10, -7, 0xFF, 0b1010 10진수, 16진수(0x), 2진수(0b) 등 다양한 형태 사용 가능
실수형 3.14, -0.001, 1.0e3 기본적으로 double, 접미사 f/F로 float 표현
문자형 'A', '9', '가' char 타입은 작은따옴표로 감싼 단일 문자
문자열형 "Hello", "123", "자바" String 객체에 저장되는 문자열 값
논리형 true, false boolean 타입에서 조건문 등에 사용

✅ 리터럴 표현 시 주의할 점

  • 정수형에서 큰 수를 다룰 때는 반드시 L을 붙여 long 타입으로 표현해야 오류가 없어요.
  • 실수형에서 float을 사용하려면 접미사 f 또는 F를 반드시 붙여야 해요. 안 그러면 double로 인식돼요!
  • char는 정수로 변환도 가능해요. 예를 들어 char c = 65;'A'로 해석됩니다!

이제 리터럴을 어떤 자료형에서 어떻게 표현하는지 좀 더 명확해지셨죠? 다음 장에서는 이런 리터럴들이 실제 자료형과 어떻게 연결되는지 구체적인 예제로 살펴볼게요.

3. 자바의 자료형과 리터럴 매칭 예시 🧩

리터럴을 정확히 이해하려면, 자바의 기본 자료형(primitive type)과 어떻게 매칭되는지를 아는 것이 매우 중요해요. 어떤 값이 어떤 타입과 잘 어울리는지 명확하게 정리해볼게요.

📌 기본형과 리터럴 매칭 표

자료형 예시 리터럴 설명
byte 100 -128~127 범위의 정수 리터럴만 가능
short 10000 16비트 정수 범위 내에서 사용 가능
int 123456 기본 정수형, 별도 접미사 없이 사용
long 12345678900L 끝에 L 또는 l 붙여야 long으로 인식
float 3.14f 접미사 f/F 필수 (소수점 표현)
double 3.14 기본 실수형, 접미사 필요 없음
char 'A' 한 글자만 작은따옴표로 감쌈
boolean true, false 참/거짓만 표현 가능

💡 리터럴을 변수에 넣을 때 주의사항

  • int i = 3.14;처럼 실수형 리터럴을 정수형 변수에 넣으면 오류가 발생해요.
  • char c = 'AB';처럼 char에는 한 글자만 넣을 수 있어요. 문자열은 String으로 써야 해요.

변수 선언과 리터럴 간의 매칭을 정확히 알면 컴파일 오류 없이 안전한 코드를 작성할 수 있어요. 다음은 이 리터럴과 자료형이 서로 변환되는 과정, 형 변환(type casting)에 대해 본격적으로 다뤄보겠습니다!

4. 묵시적 형 변환이란? (자동 형 변환) 🔄

프로그래밍을 하다 보면 서로 다른 자료형끼리 연산하거나 값을 대입하는 경우가 생기는데요, 이때 자바는 자동으로 형 변환을 해주는 경우가 있어요. 이를 묵시적 형 변환(Implicit Type Conversion)이라고 해요.

쉽게 말해, 작은 범위 → 큰 범위로는 자바가 자동으로 변환을 해준다는 이야기예요. 예를 들어, intlong으로, floatdouble로 변환돼요. 우리가 따로 뭔가를 하지 않아도요!

📌 묵시적 형 변환 규칙

  • byte → short → int → long → float → double 순으로 변환 가능해요.
  • 문자형 charint로 자동 변환될 수 있어요.

💡 예제: 자동 형 변환

int i = 100;
long l = i;  // int → long 자동 형 변환
float f = l; // long → float 자동 형 변환

위 코드처럼 int 값을 long 변수에 대입해도 문제 없이 작동해요. 더 큰 그릇으로 옮기는 느낌이라고 생각하면 이해가 쉬워요.

⚠️ 자동 변환되지 않는 경우

  • double d = 3.14f;은 가능하지만, float f = 3.14;는 오류 발생! 작은 그릇에 큰 값은 안 들어가요.

그럼 이 다음은 반대로 명시적 형 변환, 즉 강제로 자료형을 바꾸는 방법에 대해 알아볼 거예요. 이건 좀 더 주의가 필요하니 꼭 집중해주세요!

5. 명시적 형 변환이란? (강제 캐스팅) 🛠️

이번에는 자바에서 명시적 형 변환(Explicit Type Casting)에 대해 알아볼게요. 자동 형 변환과 반대로, 작은 자료형으로 바꿔야 할 경우엔 개발자가 직접 의도를 명확히 표시해줘야 해요. 이걸 캐스팅(casting)이라고 부릅니다.

즉, 큰 자료형을 작은 자료형으로 바꾸는 행위는 데이터 손실 가능성이 있기 때문에 자바가 자동으로 하지 않아요. 대신 괄호 ()를 이용해 우리가 직접 명령해야 하죠.

💡 기본 문법

변수 = (변환할_자료형) 값;

예를 들어 double 값을 int로 바꾸고 싶다면 이렇게 해요: int i = (int) 3.14; → 결과는 3 (소수점 이하 절삭!)

📌 명시적 형 변환 예제

double d = 9.99;
int i = (int) d;   // d의 값 9.99가 9로 변환됨

long l = 1000L;
short s = (short) l; // long에서 short로 변환

char c = (char) 65;  // 숫자 65는 문자 'A'로 변환

⚠️ 주의사항

  • 데이터 손실 가능성: (int) 3.993처럼 소수점은 버려짐
  • 범위 초과 문제: short s = (short) 33000;은 잘못된 값이 저장될 수 있어요!
  • 형 변환은 코드 가독성을 떨어뜨릴 수 있어서 최소화하는 것이 좋아요.

명시적 형 변환은 꼭 필요한 경우에만 사용하는 것이 좋습니다. 코드의 안정성과 예측 가능성을 해칠 수 있기 때문이죠. 이제 자동 vs 명시적 형 변환의 차이도 확실해졌죠? 😎

6. 형 변환 실습 예제 모음 ✍️

이제 개념은 다 배웠으니, 진짜 중요한 실습 시간입니다! 🔧 묵시적 형 변환과 명시적 형 변환을 어떻게 활용하는지 직접 코드로 확인해 볼게요. 하나씩 실행하면서 자료형 간의 관계를 직접 체감해보세요.

🧪 예제 1: 묵시적 형 변환

byte a = 10;
int b = a;  // byte → int 자동 형 변환
float c = b; // int → float 자동 형 변환

System.out.println("b = " + b); // 10
System.out.println("c = " + c); // 10.0

위 코드처럼 작은 자료형 → 큰 자료형으로는 자바가 스스로 형을 맞춰줍니다. 개발자가 캐스팅을 명시할 필요가 없어요.

🧪 예제 2: 명시적 형 변환

double d = 7.89;
int i = (int) d;  // double → int 명시적 형 변환 (소수점 버림)

System.out.println("d = " + d); // 7.89
System.out.println("i = " + i); // 7

명시적 형 변환은 데이터 손실이 있을 수 있으니 주의해야 해요. 위 예제처럼 소수점이 버려지는 경우가 대표적이죠.

🧪 예제 3: 문자와 숫자 간의 형 변환

char c = 'A';
int code = c;   // 문자 → 정수 (묵시적 변환)
char c2 = (char) 66; // 정수 → 문자 (명시적 변환)

System.out.println("code = " + code); // 65
System.out.println("c2 = " + c2);     // B

자바에서는 char도 숫자로 간주되기 때문에 묵시적 형 변환이 가능해요. 아스키(또는 유니코드) 값을 기반으로 작동하죠!

📋 형 변환 요약 리스트

  • 묵시적 형 변환: 작은 자료형 → 큰 자료형 (자동 변환)
  • 명시적 형 변환: 큰 자료형 → 작은 자료형 (데이터 손실 주의)
  • 문자와 숫자는 서로 변환 가능 (아스키/유니코드 기반)

이제 리터럴과 형 변환의 모든 기초를 직접 실습해봤어요. 완벽하게 이해되셨다면 다음 장에서 이 내용을 종합적으로 정리하면서 마무리해볼게요! 😊

🔚 마무리하며: 리터럴과 형 변환, 이제 확실하게 이해되셨나요?

자바에서 리터럴은 변수에 직접 넣는 값 그 자체이고, 형 변환은 그 값이나 변수를 다른 자료형으로 바꿔주는 과정이에요. 묵시적 형 변환은 자바가 자동으로 해주는 ‘편리한 변환’이고, 명시적 형 변환은 프로그래머가 책임지고 직접 지시해야 하는 ‘주의가 필요한 변환’이죠.

 

오늘 내용을 정리해보면 다음과 같아요:

  • 정수, 실수, 문자, 논리형 등 다양한 리터럴이 존재한다는 것!
  • 자동 형 변환은 자료형의 크기 순서에 따라 자바가 스스로 해준다!
  • 명시적 형 변환은 괄호 ()를 사용해 개발자가 직접 변환을 지시해야 한다!

 

이 개념을 확실히 이해하고 연습해두면, 나중에 복잡한 연산이나 타입 간의 연동에서도 훨씬 수월하게 자바를 다룰 수 있어요. 다음 시간에는 조건문과 제어문을 통해 자바의 흐름 제어 방식에 대해 배워볼게요. 놓치지 마세요! 🚀

반응형
반응형

2.1 자바 기본 문법과 자료형: 변수와 자료형의 모든 것

프로그래밍의 핵심은 바로 ‘변수’와 ‘자료형’! 자바를 제대로 배우고 싶다면 이 개념부터 제대로 이해해야 합니다. 처음엔 복잡하게 느껴질 수도 있지만, 하나씩 풀어가다 보면 어느새 마스터할 수 있어요.

반응형

안녕하세요! 오늘은 자바 프로그래밍의 가장 기초적이지만 가장 중요한 개념 중 하나인 변수와 자료형에 대해 알아보려 합니다. '변수 선언이 뭐야?', 'int와 double의 차이는 뭐지?' 같은 질문이 생겼다면, 이 글이 바로 정답입니다. 이 장에서는 자바의 기본 데이터 타입과 변수 선언 방법, 식별자 규칙 등 개발의 뿌리가 되는 내용들을 알기 쉽게 정리해 드릴게요. 실제 코딩할 때도 바로 적용 가능한 팁도 함께 알려드릴 테니 끝까지 함께해주세요!

1. 변수란 무엇인가요? 🤔

우리가 무언가를 기억하려면 어디엔가 적어두거나 저장해둬야 하잖아요? 컴퓨터도 마찬가지예요. 어떤 값을 저장하고, 필요할 때 꺼내 쓸 수 있도록 저장 공간이 필요한데, 바로 이 역할을 해주는 것이 변수입니다.

변수는 값을 저장할 수 있는 이름이 붙은 공간이에요. 예를 들어, 나이를 저장할 수 있는 공간을 만들고 싶다면 이렇게 쓸 수 있어요:

int age = 25;

여기서 int정수형 자료형을 의미하고, age는 변수 이름, 25는 변수에 저장되는 실제 값이에요.

변수의 핵심 역할 ✍️

  • 데이터를 저장하는 공간 역할을 한다.
  • 저장된 데이터를 나중에 참조하거나 수정할 수 있다.
  • 코드의 가독성과 재사용성을 높여준다.

변수가 없다면?

모든 값을 하드코딩해야 하므로 유지보수가 거의 불가능해집니다. 예를 들어 아래 코드는 비효율적이에요:

System.out.println(25);
System.out.println(25 + 5);
System.out.println(25 * 2);

하지만 변수를 사용하면 이렇게 깔끔하게 정리할 수 있어요:

int age = 25;
System.out.println(age);
System.out.println(age + 5);
System.out.println(age * 2);

변수는 자바의 모든 것의 시작입니다! 💡

결국 변수는 데이터를 담는 가장 기본적인 도구이고, 프로그래밍의 기본기를 쌓는 데 필수적인 개념이에요. 이후에 나올 연산, 조건문, 반복문, 클래스 등 모든 문법과도 연결되니 이 개념은 꼭 확실히 짚고 넘어가야겠죠?

용어 설명
변수(variable) 값을 저장하는 이름이 있는 메모리 공간
자료형(data type) 변수에 저장될 값의 종류를 지정
선언(declaration) 변수를 처음 정의하고 자료형과 이름을 지정하는 행위
초기화(initialization) 변수에 값을 처음 대입하는 작업

2. 변수 선언과 초기화 방법 ✍️

자바에서 변수를 사용하는 첫 번째 단계는 바로 선언(declaration)입니다. 변수를 선언한다는 건, 해당 값을 저장할 공간을 마련하고 이름을 붙이는 일이에요. 마치 집을 짓고 주소를 등록하는 느낌이라고 할까요? 😊

변수 선언 기본 문법

자료형 변수명;

예를 들어, 정수형 변수 score를 선언하려면 이렇게 하면 돼요:

int score;

하지만 선언만 하면 변수 안에는 아직 아무 값도 들어있지 않기 때문에 바로 사용할 수 없어요. 그래서 필요한 게 바로 초기화(initialization)입니다.

초기화란?

초기화란, 변수를 선언한 후 처음으로 값을 넣어주는 작업을 말해요. 선언과 동시에 초기화하는 것도 자주 사용하는 방법입니다:

int score = 100;

이렇게 하면 변수 score100이라는 값이 저장되며, 이후 이 값을 다른 코드에서 사용할 수 있습니다.

자바 변수 선언의 다양한 예 ✨

선언 형식 설명
int age = 20; 정수형 age 변수 선언 및 초기화
double pi = 3.14; 실수형 pi 변수 선언 및 초기화
char grade = 'A'; 문자형 grade 변수 선언 및 초기화
boolean isLogin = true; 논리형 isLogin 변수 선언 및 초기화

초보자가 자주 실수하는 예 ❗

  • 선언만 하고 초기화하지 않아 오류 발생
  • 자료형과 값이 맞지 않아 컴파일 에러 (예: int num = "10";)

이제 변수 선언과 초기화 방법이 조금 더 명확해졌나요? 다음은 변수 이름을 지을 때 꼭 알아야 할 식별자 규칙에 대해 알아볼 차례입니다!

3. 식별자 이름 규칙 알아보기 🏷️

변수나 메서드, 클래스 이름을 정할 때 우리는 식별자(Identifier)라는 이름을 사용합니다. 그런데 아무 이름이나 막 붙이면 오류가 발생할 수 있어요. 그래서 자바에서는 식별자에 대한 엄격한 규칙이 존재한답니다!

식별자 작명 규칙 정리 📋

  • 영문자(A~Z, a~z), 숫자(0~9), 밑줄(_), 달러기호($)만 사용할 수 있어요.
  • 숫자로 시작하면 안 돼요. (예: 2age는 오류!)
  • 자바의 키워드(int, class, if 등)는 사용할 수 없어요.
  • 대소문자를 구분합니다. (Ageage는 다른 변수!)

개발자들이 자주 쓰는 네이밍 스타일은?

스타일 설명 예시
camelCase 소문자로 시작하고 단어마다 대문자 userName, totalCount
PascalCase 모든 단어의 시작을 대문자로 UserName, TotalCount
snake_case 단어 사이에 밑줄 사용 user_name, total_count

💡 좋은 변수 이름은 어떤 이름일까요?

좋은 식별자는 읽기 쉬우면서도 변수의 의미를 정확히 드러내야 합니다. 아래는 나쁜 예좋은 예를 비교한 표예요.

나쁜 이름 좋은 이름 설명
a age 단순한 글자보다는 의미 있는 이름 사용
b1 isLogin 불린 변수는 보통 is로 시작
tmp userInput 의미 없는 이름보다 정확한 정보 전달

이제 식별자 규칙과 좋은 변수 이름의 기준을 이해하셨다면, 자바의 기본 데이터 타입에 대해 본격적으로 알아볼 시간입니다!

4. 자바의 기본 데이터 타입 정리 📦

자바에서는 데이터를 저장할 때 어떤 종류의 값인지를 정확하게 지정해야 해요. 그래야 컴퓨터가 그 값들을 정확하게 다룰 수 있거든요. 그래서 자바는 자료형(Data Type)을 엄격하게 사용합니다.

자바의 자료형은 크게 기본형(Primitive Type)참조형(Reference Type)으로 나눌 수 있어요. 이 장에서는 그 중 기본형을 중심으로 설명드릴게요.

기본형 데이터 타입이란?

기본형 데이터는 자바에서 가장 단순한 형태의 데이터를 의미합니다. 숫자, 문자, 논리값 등 실제 값을 저장하는 역할을 하죠. 자바에는 총 8개의 기본형 데이터 타입이 있어요.

타입 크기 예시 설명
byte 1 byte 127, -128 작은 정수 저장용
short 2 bytes 32_000 중간 크기의 정수
int 4 bytes 1_000_000 기본 정수형, 가장 많이 사용됨
long 8 bytes 123456789L 매우 큰 정수 저장 시 사용
float 4 bytes 3.14f 소수점 포함, 접미사 f 필요
double 8 bytes 3.141592 정밀한 실수, 기본 실수형
char 2 bytes 'A' 하나의 문자 저장 (문자열 아님)
boolean 1 byte true, false 논리값 저장

다음 단계에서는 이 기본 타입들을 각각 자세히 분석하고, 실제 예제도 함께 살펴볼게요. 실수형과 정수형, 문자형, 논리형은 자주 헷갈리는 부분이니 꼭 정리해보세요!

5. 정수형, 실수형, 문자형, 불린형 자세히 보기 🔍

자바에서 데이터를 표현할 수 있는 네 가지 대표적인 기본형 타입은 정수형, 실수형, 문자형, 불린형이에요. 각각 어떤 특징이 있고, 어떤 상황에서 사용해야 하는지 구체적으로 알아볼게요!

① 정수형 (byte, short, int, long)

  • int는 가장 자주 사용하는 정수 타입이며, 대부분의 숫자는 이걸로 처리 가능해요.
  • long은 범위가 매우 넓고, 큰 숫자에는 접미사 L을 붙여야 해요.
int score = 100;
long population = 7500000000L;

② 실수형 (float, double)

소수점이 포함된 값을 표현할 때 사용하며, 자바에서는 double이 기본이에요. float을 사용할 땐 접미사 f를 꼭 붙여야 한다는 점도 기억해주세요.

float pi = 3.14f;
double avg = 85.75;

③ 문자형 (char)

char한 글자만 저장할 수 있는 타입이에요. 반드시 작은 따옴표 ' '로 감싸서 표현해야 해요.

char grade = 'A';
char korean = '한';

④ 불린형 (boolean)

논리적인 조건이 필요한 경우, boolean 타입을 사용합니다. 값은 오직 두 가지! true 또는 false입니다.

boolean isLogin = true;
boolean isAdult = false;

✅ 정리! 어떤 타입을 써야 할까?

  • 정수 값 → int, 큰 수면 long
  • 소수점 → double, 공간이 부족하면 float
  • 문자 하나 → char
  • 참/거짓 판단 → boolean

이제 다양한 기본 자료형들을 실제 코드에서 어떻게 선언하고 사용할 수 있는지, 다음 장에서 실습 예제로 이어서 확인해볼게요!

6. 변수와 자료형 실습 예제 💻

이제 자바에서 변수를 선언하고, 다양한 자료형을 활용하는 방법을 실전 코드로 익혀볼 차례입니다. 아래 예제들은 콘솔 출력 프로그램을 통해 각 자료형의 선언과 사용 방식을 보여주고 있어요. 직접 따라해 보면서, 변수 개념을 몸에 익혀보세요!

예제 1️⃣: 다양한 변수 선언과 출력

public class VariableExample {
    public static void main(String[] args) {
        int age = 30;
        double height = 174.5;
        char grade = 'A';
        boolean isMember = true;

        System.out.println("나이: " + age);
        System.out.println("키: " + height);
        System.out.println("등급: " + grade);
        System.out.println("회원 여부: " + isMember);
    }
}

출력 결과는 각각의 변수에 저장된 값이 그대로 출력되는 형태입니다. 각 변수의 자료형이 다름에도 불구하고 자바는 + 연산자를 사용해 문자열과 함께 출력할 수 있도록 해줍니다.

예제 2️⃣: 자료형 간 연산 및 형 변환

public class TypeCastingExample {
    public static void main(String[] args) {
        int x = 10;
        double y = 3.5;
        double result = x + y;

        System.out.println("결과: " + result);

        // 명시적 형 변환
        int intResult = (int) y;
        System.out.println("강제 변환된 값: " + intResult);
    }
}

이 예제는 정수형 int와 실수형 double이 자동으로 계산되고, 명시적으로 실수를 정수로 변환하는 모습을 보여줍니다. 중요한 건 데이터 손실이 발생할 수 있다는 점이에요!

예제 3️⃣: 문자와 아스키 코드

public class CharExample {
    public static void main(String[] args) {
        char ch = 'C';
        int ascii = ch;

        System.out.println("문자: " + ch);
        System.out.println("아스키 코드: " + ascii);
    }
}

문자형 char은 내부적으로 숫자(아스키 코드)로 표현됩니다. int ascii = ch;처럼 자동 변환을 통해 숫자로 확인할 수 있어요.

🧠 연습 문제

  • 사용자 이름(String), 나이(int), 키(double), 성별(char), 회원 여부(boolean)를 변수로 선언하고 값을 초기화한 후 출력해보세요.

이렇게 실습을 통해 변수와 자료형 개념을 직접 다뤄보면, 개념이 머리에 쏙쏙 들어올 거예요! 이제 자바의 변수와 자료형에 대한 감이 확실히 잡히셨죠?

마무리 🌱

자바에서 가장 기본이자 중요한 개념인 변수와 자료형에 대해 정말 꼼꼼하게 살펴봤습니다. 변수는 프로그램 안에서 데이터를 저장하고 다루는 핵심 도구이고, 자료형은 그 데이터를 어떤 형식으로 다룰지 결정하는 기준이죠.

 

오늘 학습한 내용을 바탕으로 앞으로 나올 연산자, 조건문, 반복문까지도 더 쉽게 이해할 수 있을 거예요. 실습 예제도 꼭 직접 입력해보고, 잘못된 부분이 있다면 고쳐가며 복습해 보세요. 그렇게 하나하나 익숙해지는 게 중요하거든요!

 

다음 장에서는 다양한 연산자와 계산 방법을 통해 변수들을 어떻게 조작하는지 배워볼 거예요. 벌써부터 기대되지 않나요? 😉

반응형
반응형

1.6 실습: Hello World 프로그램 실행 – 작성한 프로그램을 컴파일하고 실행하여 동작 확인

여러분, 자바 파일 하나 만들고 실행하는 게 이렇게 재밌는 일이라는 걸 아셨나요? 처음으로 "Hello, World!"를 출력해보는 그 순간, 진짜 개발자가 된 것 같은 뿌듯함이 느껴질 거예요!

반응형

안녕하세요, 자바 입문자 여러분! 지난 시간까지는 자바 언어의 역사와 특징, 그리고 개발 도구 설치까지 차근차근 살펴봤습니다. 이제는 실제로 자바 파일을 작성하고, 컴파일하고, 실행해보는 실습 단계에 도달했어요. 직접 코드를 작성해서 출력 결과를 확인하는 이 단계는 자바의 문법과 동작 방식을 몸으로 익히는 데 큰 도움이 됩니다. 오늘은 간단한 "Hello World" 예제를 통해 컴파일과 실행 과정을 단계별로 따라가 보면서, 자바 개발의 첫걸음을 함께 내딛어보겠습니다.

1. Hello World 자바 소스 코드 살펴보기 📝

자바에서 가장 처음 만나게 되는 코드, 바로 Hello World 프로그램입니다. 이 코드는 짧지만 자바의 핵심 구조가 어떻게 구성되어 있는지 잘 보여주는 예제이기도 해요. 먼저 전체 코드를 먼저 살펴보고, 각 구성 요소를 하나씩 뜯어보겠습니다.

HelloWorld.java 예제 코드

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello, World!");
    }
}

이 코드에는 자바의 가장 기본적인 요소들이 모두 포함돼 있어요. 자, 이제 한 줄씩 살펴볼까요?

1️⃣ public class HelloWorld

자바는 클래스 단위로 프로그램이 구성돼요. HelloWorld라는 이름의 클래스를 선언했고, 클래스 이름은 파일 이름과 반드시 일치해야 해요. 그래서 이 파일의 이름은 HelloWorld.java여야 합니다.

2️⃣ public static void main(String[] args)

이 부분은 자바 프로그램의 시작점이에요. 자바 프로그램을 실행하면 JVM이 이 메서드부터 실행을 시작해요. 'main 메서드'라고 부르며, 반드시 다음과 같은 형식으로 작성돼야 합니다:

  • public: 어디서든 호출 가능하게 함
  • static: 객체를 만들지 않아도 사용 가능
  • void: 반환값이 없음
  • String[] args: 명령줄 인자 받기용 매개변수

3️⃣ System.out.println("Hello, World!");

이 줄은 실제로 화면에 출력을 담당하는 부분이에요. 콘솔에 "Hello, World!" 라는 문장을 출력하죠. 자바에서 표준 출력은 System.out을 통해 이루어지고, println()은 줄 바꿈을 포함해 출력해 줍니다.

이제 코드의 각 줄이 어떤 역할을 하는지 조금 감이 잡히셨나요? 😀 다음 단계에서는 이 파일을 어떻게 저장하고, 어떤 확장자를 써야 하는지 설명드릴게요.

2. 파일 저장 및 확장자 명명 규칙 📂

이제 자바 코드를 직접 작성해봤으니, 이 파일을 저장해볼 차례예요. 여기서 중요한 점은 자바 파일의 저장 이름과 클래스 이름은 반드시 동일해야 한다는 것입니다. 이 규칙을 지키지 않으면 컴파일 에러가 발생해요.

파일 저장 이름 규칙 🔤

  • 클래스 이름이 HelloWorld라면 파일명은 HelloWorld.java여야 합니다.
  • 자바 소스 파일의 확장자는 반드시 .java 여야 합니다.
  • 대소문자를 구분하므로 정확하게 입력해야 해요!

예시 저장 과정 💾

  1. 텍스트 에디터(예: VS Code, Notepad++, 이클립스 등)를 열고 코드를 붙여넣기
  2. 메뉴에서 다른 이름으로 저장 선택
  3. 파일 이름을 HelloWorld.java로 지정 후 저장

💡 팁: 윈도우에서는 파일 저장 시 확장자가 숨김 처리될 수 있으니, 폴더 옵션에서 “알려진 파일 형식의 파일 확장명 숨기기”를 해제해 주세요!

이제 파일 저장까지 완료했으니, 다음 단계에서는 이 파일을 컴파일해서 자바 프로그램이 어떻게 바이트코드로 바뀌는지 알아볼 거예요. 터미널을 사용할 준비 되셨죠? 😊

3. 컴파일: 자바 파일을 바이트코드로 변환하기 🔧

자바 프로그램은 소스 코드를 바로 실행하는 것이 아니라 컴파일 과정을 거쳐 바이트코드(.class 파일)로 변환된 뒤, JVM(Java Virtual Machine)이 이를 실행합니다. 자바의 대표적인 특징이죠! 이 과정을 직접 실행하면서 확인해보겠습니다.

자바 컴파일 명령어 사용 방법

파일을 컴파일하려면 명령 프롬프트(Windows)나 터미널(Mac/Linux)에서 아래 명령어를 입력하면 됩니다:

javac HelloWorld.java

📌 이 명령어는 javac(Java Compiler)를 통해 HelloWorld.java 파일을 HelloWorld.class라는 바이트코드 파일로 변환해 줍니다.

✅ 컴파일 결과 확인

  • 컴파일 성공 시, 별다른 메시지 없이 HelloWorld.class 파일이 생성됩니다.
  • 컴파일 에러가 발생하면 오류 메시지가 표시되고, .class 파일은 생성되지 않아요.

컴파일이 잘 되었다면 이제 실행만 남았네요! 다음 섹션에서는 우리가 만든 바이트코드를 실제로 실행해서 "Hello, World!" 메시지를 출력해 보겠습니다 😊

4. 실행: 자바 프로그램 실행 결과 확인하기 ▶️

자바 코드를 작성하고 컴파일까지 완료했다면, 이제는 실행 단계입니다. 우리가 만든 HelloWorld.class 파일을 자바 가상 머신(JVM)을 통해 실제로 실행해 볼 거예요.

자바 클래스 실행 명령어

java HelloWorld

☝ 주의: 확장자인 .class는 입력하지 않고, 클래스 이름만 입력해야 해요!

실행 결과 화면

Hello, World!

바로 이거죠! 여러분의 터미널에 Hello, World!가 출력됐다면, 첫 자바 프로그램 실행에 성공한 거예요. 🎉 진심으로 축하드립니다! 이제 여러분은 자바 개발자로서의 첫걸음을 내디딘 거랍니다.

실행 과정 요약 🔄

  1. 터미널에서 해당 파일이 있는 디렉터리로 이동
  2. javac HelloWorld.java로 컴파일
  3. java HelloWorld로 실행

혹시 실행이 잘 안 되거나 오류 메시지가 나왔다면 괜찮아요! 다음 섹션에서는 자주 발생하는 오류와 그 해결 방법들을 하나씩 정리해 드릴게요 😊

5. 자주 발생하는 컴파일/실행 오류와 해결법 💡

Hello World 예제는 간단하지만, 처음 접하는 분들에겐 의외로 많은 오류가 발생할 수 있어요. 자바는 문법에 엄격하기 때문에, 아주 작은 실수에도 에러가 발생합니다. 아래는 가장 많이 나오는 오류들과 그 해결법이에요.

❌ 컴파일 시 자주 발생하는 오류

오류 메시지 발생 원인 해결 방법
';' expected 세미콜론 누락 각 문장 끝에 ;을 붙였는지 확인
class HelloWorld is public, should be declared in a file named HelloWorld.java 파일명과 클래스명이 다름 파일 이름을 HelloWorld.java로 저장
cannot find symbol 변수, 메서드 오타 대소문자 및 철자 확인

⚠️ 실행 시 자주 나오는 오류

  • Error: Could not find or load main class HelloWorld
    클래스 파일이 없는 위치에서 실행하거나 .class가 존재하지 않을 경우 발생.
  • Exception in thread "main"
    main 메서드 오탈자 또는 잘못된 선언 형식 (예: static 빠짐)

에러 메시지를 무서워하지 마세요! 대부분 아주 사소한 실수에서 비롯되며, 그만큼 쉽게 고칠 수 있어요. 😊

지금까지의 과정을 통해 여러분은 단순한 텍스트 출력 이상의 경험을 하셨을 거예요. 이제 마지막으로 이번 실습을 정리하고, 다음 단계에서 어떤 걸 배울지 살짝 알려드릴게요!

6. 실습 요약과 다음 학습 연결 고리 🔗

처음으로 자바 프로그램을 직접 작성하고 실행해보는 이 경험, 어떠셨나요? 지금까지 진행한 Hello World 실습은 자바의 전체 구조와 실행 흐름을 이해하는 데 있어 매우 중요한 첫걸음이에요. 우리가 실습한 과정을 한 번 정리해볼게요.

🧾 실습 요약: Hello World 작성부터 실행까지

  1. 자바 기본 구조를 이해하고 HelloWorld 클래스를 작성함
  2. HelloWorld.java로 파일 저장 (클래스 이름과 일치해야 함)
  3. javac HelloWorld.java 명령어로 컴파일 수행
  4. java HelloWorld 명령어로 실행 후 "Hello, World!" 출력 확인
  5. 오류 메시지 확인 및 해결 방법 학습

이 짧은 실습 안에 자바 문법, 클래스 구조, 컴파일러 사용법, JVM의 동작 방식까지 정말 많은 개념이 녹아 있었답니다!

💡 다음 단계 예고: 변수와 자료형

이제 "Hello, World!"만 출력하던 우리 프로그램을 한 단계 발전시켜 볼 차례예요. 다음 시간에는 변수 선언과 자료형을 배우면서 프로그램에 데이터를 다루는 방법을 익혀볼 거예요. 직접 숫자와 문자열을 입력하고 출력해보며 자바의 기본 타입과 연산에 대해 실습해볼 예정입니다.

 

지금까지 첫 번째 자바 실습을 멋지게 마무리하셨습니다. 👏 이제 진짜 자바의 세계로 한 걸음 더 나아가 볼 준비 되셨죠?

 

이번 시간에는 자바의 가장 기본이 되는 Hello World 프로그램을 직접 작성하고, 컴파일하고, 실행하는 과정을 차근차근 실습해보았어요. 처음이라 약간은 생소했을 수도 있지만, 이런 작은 성공들이 모여 큰 자신감으로 이어진다는 걸 꼭 기억해 주세요 😊

 

이 실습을 통해 자바의 클래스 구조, 컴파일과 실행 흐름, 오류 해결 방법 등 필수적인 기초를 하나씩 내 것으로 만들 수 있었을 거예요. 앞으로 배울 변수, 연산자, 조건문 등을 통해 훨씬 더 다양한 프로그램을 만들어보게 될 거니까 기대 많이 해주세요!

 

모든 개발자들의 시작은 Hello World였어요. 이제 여러분도 자바 개발자로서의 첫 발걸음을 내딛은 거랍니다 🚀

반응형

+ Recent posts