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 |
|---|