본문 바로가기
LV1_Syntax/JAVA 기초

[#3] JAVA - args, 기본 자료형

by 하타라시 2026. 2. 24.

1. 인텔리제이 - args (커맨드 라인 인자)

1-1. args세팅

실패실패

⇒ 적용을 누른 후, 확인을 누릅니다.

1-2. 실행

public class Main {
    public static void main(String[] args) {
        System.out.println("hello world!");
        if (args.length > 0) {
            for (String arg : args) {
                System.out.println("전달된 인자: " + arg);
            }
        } else {
            System.out.println("전달된 인자가 없습니다.");
        }
    }
}

실패

왜 args는 String 배열인가요?

  • 사용자가 어떤 값을 입력할지 알 수 없기 때문입니다.
  • 가장 범용적인 형태인 문자열(String)로 받아, 필요 시 형변환하여 사용합니다.

⇒ 커맨드 라인 인자는 기본적으로 문자열 배열(String[]) 형태로 전달됩니다.

💡

Keyword (추후 notion 페이지 연결)

  • args
  • 배열(Array)
  • Run
  • Debug

⇒ 실행 시 전달되는 인자를 이해하면 프로그램 동작을 더 유연하게 제어할 수 있습니다.

2. JAVA 기초 - 기본 자료형(Primitive Type)

구분 타입 크기 (byte) 특징 및 설명

정수형 byte 1 최소 단위 정수
  short 2 음수 포함 정수
  char 2 유니코드 문자 (음수 없음)
  int 4 자바 정수 기본 타입
  long 8 큰 숫자용, 접미사 L 필요
실수형 float 4 소수점, 접미사 f 필수
  double 8 자바 실수 기본 타입

2-1. 정수형

2-1-0. bit

  • bit는 컴퓨터의 최소 단위입니다.
  • 1 bit는 2 진수 0 또는 1로 이루어 집니다.
  • 범위는 0~1까지 입니다.

2-1-1. byte

  • byte는 1bit 8개로 이루어집니다.
  • 범위는 -128 ~ 127까지 입니다.
  • unsigned를 붙이면 양수만 저장 가능하며 범위는 0 ~ 255 입니다.

2-1-2. short

  • short는 2 byte 입니다.
  • 범위는 -32,768 ~ 32,767까지 입니다.
  • byte보다 큰 정수를 저장할 때 사용합니다.
  • unsigned를 붙이면 양수만 저장 가능하며 범위는 0 ~ 65,535 입니다.

2-1-3. char

  • char는 2 byte입니다.
  • 범위는 0 ~ 65,535입니다.
  • 유니코드를 기반으로 합니다.
  • c언어는 아스키코드 기반입니다.
  • unsigned 개념이 따로 없습니다. (항상 0 이상)

2-1-4. int

  • int는 4 byte입니다.
  • 범위는 -2,147,483,648 ~ 2,147,483,647입니다.
  • 일반적인 정수 연산에 자주 활용됩니다.
  • unsigned를 붙이면 양수만 저장 가능하며 범위는 0 ~ 4,294,967,295 입니다.

2-1-5. long

  • long은 8 byte입니다.
  • 범위는 -9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807입니다.
  • 아주 큰 범위의 정수를 활용할 때 사용합니다.
  • unsigned를 붙이면 양수만 저장 가능하며 범위는 0 ~ 18,446,744,073,709,551,615 입니다.

2-2. 실수형

2-2-1. float

  • float는 4 byte입니다.
  • 소수점을 포함한 숫자를 저장할 수 있습니다.
  • 3.14라고 쓰면 안되고, 3.14f 또는 3.14F로 써야합니다.
  • 정밀도는 소수점 7자리입니다.
  • 범위는 ±1.4 × 10^-45 ~ ±3.4 × 10^38입니다.
  • int값 최대 범위를 초과하는 큰 수를 근사값으로 저장할 때 활용 가능합니다.

2-2-2. double

  • double은 8 byte입니다.
  • 소수점을 포함한 숫자를 저장할 수 있습니다.
  • 3.14로 쓰면 됩니다. 혹은 3.14d나 3.14D로 표기해도됩니다.
  • 정밀도는 소수점 15~16자리입니다.
  • 범위는 ±4.9 × 10^-324 ~ ±1.8 × 10^308입니다.
  • long 보다 훨씬 범위가 크므로, 우주 계산, 초정밀 계산에 활용됩니다.

Java에는 unsigned가 없는데 왜 알아야 하나요?

  • 외부 시스템이나 네트워크 통신에서는 unsigned 타입을 사용하는 경우가 있습니다.
  • Java에서 이를 잘못 해석하면 음수로 출력되어 데이터 오류가 발생할 수 있습니다.

⇒ 시스템 간 데이터 교환을 위해 unsigned 개념을 이해하는 것이 중요합니다.

2-3. 형변환

2-3-1. 업캐스팅

  • 작은 크기의 타입을 같거나 큰 타입으로 변환하는 것입니다.
  • int와 float는 4 byte지만, float가 값의 범위가 더 큽니다.
int i = 100;
long l = i;     
float f = l; 

System.out.println(f); 

⇒ f는 100.0이 출력됩니다.

2-3-2. 다운캐스팅

  • 큰 크기의 타입을 작은 크기의 타입으로 변환되는 것입니다.
  • 만일 값이 더 크다면, 절삭됩니다.
  • 데이터 손실이나 오버플로우가 발생할 수 있기 때문에, 개발자가 명시적으로 타입을 적어줘야합니다.
double d = 3.14;
int i_d = (int) d;   // 8byte 실수 -> 4byte 정수 (강제)

System.out.println(i_d); // 결과: 3 (소수점 아래 손실)

int num = 130;
byte b = (byte) num; // 4byte 정수 -> 1byte 정수 (강제)

System.out.println(b);   // 결과: -126 (오버플로우 발생)

2-3-3. 암시적 형변환(Implicit Casting)

  • 작은 타입에서 큰 타입으로 자바가 자동으로 변환해줍니다.
byte b = 100;
int i = b;
float f= i;

⇒ int 보다 float가 표현할 수 있는 범위가 넓으므로, 같은 4 byte여도 float가 더 큰 것으로 취급됩니다.

⇒ 반대로 int i = f; 했으면 에러가 발생합니다.

2-3-4. 명시적 형변환(Explicit Casting)

  • 큰 타입에서 작은 타입으로 변환하거나, 데이터 손실을 각오하고서 작은 타입을 큰 타입으로 변환할 때 쓰입니다.
int i = 130;
byte b = (byte) i;

⇒ byte는 -128 ~ 127까지 가능하므로, 오버플로우가 발생하고, -126으로 저장합니다.

⇒ 127 + 1 = -128이 되고, 이 상태에서 2를 더하게 되면 , -126입니다.

💡

Keyword (추후 notion 페이지 연결)

  • 정수
  • 실수
  • 문자
  • 업캐스팅
  • 다운캐스팅
  • 암시적 형변환
  • 명시적 형변환
  • 오버플로우
  • 데이터 손실
  • 아스키코드
  • 유니코드

⇒ 형변환은 데이터 표현 범위와 손실 가능성을 함께 이해해야 합니다.

'LV1_Syntax > JAVA 기초' 카테고리의 다른 글

[#4] JAVA - 기초 명명 규칙 및 스타일  (0) 2026.02.26