Java 입문: 개발 환경부터 자료형, 변수, 형 변환까지

Alchemist·2026년 10월 8일

KT AIVLE

목록 보기
69/130

Java를 처음 시작하면 문법보다 먼저 헷갈리는 것이 JDK가 무엇인지, int와 String은 왜 다른지, 값을 변수에 어떻게 담는지 같은 기본 개념이다.

이 글에서는 Java 코드를 실행하기 위한 최소 환경부터 자료형, 변수, 상수, 주석, 형 변환까지 한 번에 정리한다. 이후 조건문, 반복문, 객체지향을 공부하기 위한 가장 앞단의 내용이라고 보면 된다.

1. Java 코드는 어떻게 실행될까?

Java 개발을 위해서는 JDK(Java Development Kit) 가 필요하다. JDK에는 Java 소스 코드를 바이트코드로 컴파일하는 javac, 프로그램을 실행하는 java 같은 개발 도구가 포함되어 있다.

2026년 기준 최신 Java SE 릴리스는 더 새 버전까지 나와 있지만, 입문 학습에서는 JDK 25 LTS처럼 장기 지원 버전을 선택하면 버전 변화에 덜 흔들리며 공부하기 좋다.

개발 도구는 IntelliJ IDEA, VS Code 등 무엇을 사용해도 괜찮다. 중요한 것은 IDE 자체보다 다음 흐름을 이해하는 것이다.

Hello.java
    ↓ javac
Hello.class
    ↓ JVM에서 실행
프로그램 결과

가장 기본적인 Java 프로그램은 다음과 같다.

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

main은 프로그램이 시작되는 진입점이고, System.out.println()은 값을 콘솔에 출력한다.

Java 25에는 더 간결한 소스 파일 형태도 추가되었지만, 클래스와 public static void main(String[] args) 구조를 먼저 익혀두면 기존 Java 코드와 프레임워크를 이해하기 쉽다.

2. 자료형은 왜 필요할까?

프로그램은 숫자, 문자, 참/거짓 등 서로 다른 종류의 데이터를 다룬다. Java는 변수를 만들 때 어떤 종류의 값을 저장할지 자료형을 명확하게 지정하는 정적 타입 언어다.

int retryCount = 3;
double responseTime = 1.25;
boolean success = true;
char grade = 'A';
String endpoint = "/api/users";

기본 자료형

Java의 대표적인 기본 자료형은 다음과 같다.

자료형용도예시
int일반적인 정수100
long더 큰 정수3_000_000_000L
float실수3.14F
double더 정밀한 실수3.141592
boolean참/거짓true, false
charUTF-16 코드 단위 하나'A'

int는 32비트, long은 64비트 정수이고, float와 double은 부동소수점 수를 표현한다. 일반적인 실수 계산에는 double을 더 자주 사용한다.

초보 단계에서 자주 보는 설명 중 boolean을 무조건 1바이트라고 외우는 경우가 있는데, Java 언어 명세는 boolean의 저장 크기를 고정된 바이트 수로 정의하지 않는다. true와 false 두 값만 가진다고 이해하는 것이 정확하다.

또한 char는 2바이트이지만 모든 유니코드 문자를 하나의 char로 표현할 수 있는 것은 아니다. 이모지처럼 보조 문자가 필요한 경우에는 두 개의 char가 사용될 수 있다.

참조 자료형

String, 배열, 클래스의 객체 등은 참조 자료형이다.

String serviceName = "order-api";
int[] statusCodes = {200, 201, 404};
User user = new User();

초보 설명에서는 참조 변수가 "메모리 주소를 저장한다"고 단순화하기도 한다. 더 정확하게는 객체를 가리키는 참조값을 가진다고 이해하면 된다. 그 참조값이 실제 물리 메모리 주소와 동일하다고 가정할 필요는 없다.

3. 변수 선언과 초기화

변수는 값을 저장하고 다시 사용하기 위한 이름 있는 공간이다.

int requestCount = 10;

구조를 나누면 다음과 같다.

int          requestCount          = 10;
자료형       변수명                  값

선언과 대입을 나누는 것도 가능하다.

int requestCount;
requestCount = 10;

하지만 값이 준비되어 있다면 선언과 동시에 초기화하는 편이 읽기 쉽다.

String environment = "production";
boolean cacheEnabled = true;

4. 변수 이름은 코드의 설명서다

변수명에는 문자, 숫자, _, $ 등을 사용할 수 있지만 숫자로 시작할 수 없고 Java 예약어도 사용할 수 없다.

int userCount = 10;      // 좋음
int activeUserCount = 8; // 의미가 구체적

Java에서는 일반적으로 변수와 메소드 이름에 lowerCamelCase를 사용한다.

String apiBaseUrl = "https://example.com";
int maxRetryCount = 3;

아래처럼 의미를 알기 어려운 이름은 피하는 편이 좋다.

int a = 3;
int x1 = 5;

코드는 작성하는 시간보다 다시 읽는 시간이 길다. 변수명만 보고도 값의 역할을 추측할 수 있게 만드는 것이 중요하다.

5. 주석은 필요한 곳에만 사용한다

한 줄 주석은 //, 여러 줄 주석은 /* ... */을 사용한다.

int timeoutSeconds = 30; // 외부 API 요청 제한 시간
/*
개발 환경에서는 테스트 서버를 사용한다.
운영 환경에서는 실제 API 주소를 사용한다.
*/

다만 다음처럼 코드가 이미 설명하는 내용을 주석으로 반복할 필요는 없다.

int userCount = 10; // userCount에 10을 넣는다

좋은 주석은 무엇을 하는지보다 왜 이렇게 했는지 설명한다.

6. 바뀌면 안 되는 값은 final

한 번 값이 정해진 뒤 다시 대입하지 못하게 하려면 final을 사용한다.

final int MAX_RETRY_COUNT = 3;
MAX_RETRY_COUNT = 5; // 컴파일 오류

상수처럼 사용할 때는 UPPER_SNAKE_CASE를 많이 사용한다.

주의할 점은 final 변수가 반드시 선언과 동시에 초기화되어야 하는 것은 아니라는 것이다. 인스턴스의 final 필드는 생성자에서 한 번 초기화할 수도 있다.

class ApiClient {
    private final String baseUrl;

    ApiClient(String baseUrl) {
        this.baseUrl = baseUrl;
    }
}

7. 형 변환: 작은 범위에서 큰 범위로, 큰 범위에서 작은 범위로

자동 형 변환

표현 범위가 더 넓은 타입으로 옮길 때는 Java가 자동으로 변환할 수 있다.

int requestCount = 120;
long totalRequestCount = requestCount;
double average = totalRequestCount;

단, int -> float -> double처럼 변환 자체는 가능해도 부동소수점 표현 특성 때문에 매우 큰 정수에서는 정밀도 손실이 생길 수 있다. "큰 자료형이므로 언제나 값이 완벽하게 보존된다"고 생각하면 안 된다.

명시적 형 변환

반대로 더 좁은 타입으로 바꾸려면 직접 캐스팅해야 한다.

double latency = 42.9;
int roundedDownLatency = (int) latency;

System.out.println(roundedDownLatency); // 42

실수에서 정수로 변환하면 소수점 아래가 버려진다.

문자열과 숫자 변환

실무에서 API 파라미터나 입력값을 다루다 보면 문자열과 숫자 사이의 변환이 자주 필요하다.

String pageText = "12";
int page = Integer.parseInt(pageText);
int statusCode = 200;
String statusText = String.valueOf(statusCode);

잘못된 숫자 문자열을 변환하면 예외가 발생한다.

Integer.parseInt("12px"); // NumberFormatException

따라서 사용자 입력이나 외부 데이터는 이후에 배울 예외 처리와 함께 사용하는 경우가 많다.

8. 처음 공부할 때 자주 헷갈리는 부분

String은 기본 자료형이 아니라 참조 자료형이다. 문자열 리터럴에는 큰따옴표("), char에는 작은따옴표(')를 사용한다.

String language = "Java";
char firstLetter = 'J';

또한 double을 int로 바꿀 때 반올림되는 것이 아니라 소수 부분이 잘린다.

System.out.println((int) 9.99); // 9

핵심 정리

  • Java 프로그램을 개발하려면 JDK가 필요하고, 입문 단계에서는 LTS 버전을 선택하기 편하다.
  • Java는 변수 선언 시 자료형을 지정하는 정적 타입 언어다.
  • int, long, float, double, boolean, char는 기본 자료형이다.
  • String, 배열, 객체는 참조 자료형이다.
  • 변수는 의미를 드러내는 lowerCamelCase 이름을 사용하는 것이 좋다.
  • 값 재대입을 막으려면 final을 사용한다.
  • 넓은 타입으로는 자동 변환될 수 있지만, 좁은 타입으로 바꿀 때는 명시적 캐스팅이 필요하다.
  • 문자열과 숫자 변환은 Integer.parseInt(), String.valueOf() 등을 활용한다.
profile
html_programming_language

0개의 댓글