728x90
반응형
Java 변수란
Java에서 변수는 데이터를 저장하는 메모리 공간을 의미합니다. 변수는 프로그램이 실행되는 동안 값을 변경할 수 있으며, 다양한 데이터 타입을 가질 수 있습니다. 이 글에서는 Java 변수의 기본 개념부터 리터럴, 상수, 오버플로우, 형변환까지 자세히 알아보겠습니다.
1. Java 리터럴 (Literals)
리터럴(Literal)은 변수에 저장할 고정된 값을 의미합니다. 예를 들어, 숫자 100, 문자 'A', 문자열 "Hello" 같은 값들이 리터럴입니다.
리터럴의 종류
- 정수 리터럴: 10, 0b1010(이진수), 012(8진수), 0xA(16진수)
- 실수 리터럴: 3.14, 2.0e3 (2.0 × 10³)
- 문자 리터럴: 'A', '1'
- 문자열 리터럴: "Hello World"
- 논리 리터럴: true, false
int number = 100; // 정수 리터럴
char letter = 'A'; // 문자 리터럴
String text = "Hello"; // 문자열 리터럴
boolean flag = true; // 논리 리터럴
2. Java 변수 (Variables)
변수는 데이터를 저장하고 관리하는 역할을 합니다. Java에서 변수를 선언할 때는 데이터 타입과 변수명을 지정해야 합니다.
int age = 25; // 정수형 변수
double pi = 3.14; // 실수형 변수
String name = "Java"; // 문자열 변수
변수의 종류
- 지역 변수 (Local Variable): 메서드 내부에서 선언된 변수로, 해당 메서드 내에서만 사용 가능.
- 멤버 변수 (Instance Variable): 클래스 내부에서 선언되며, 객체 생성 후 사용 가능.
- 클래스 변수 (Static Variable): static 키워드를 사용하여 선언된 변수로, 모든 객체가 공유.
3. Java 상수 (Constants)
상수(Constant)는 한 번 값이 할당되면 변경할 수 없는 변수입니다. Java에서는 final 키워드를 사용하여 선언합니다.
final double PI = 3.14159;
final int MAX_VALUE = 100;
상수를 사용할 때의 장점
- 프로그램의 가독성이 좋아짐
- 실수로 값을 변경하는 오류 방지
- 유지보수성이 향상됨
4. Java 오버플로우 (Overflow)
오버플로우(Overflow)는 변수의 저장 범위를 초과하는 경우 발생합니다.
public class OverflowExample {
public static void main(String[] args) {
byte b = 127; // byte의 최대값
b++; // 오버플로우 발생
System.out.println(b); // -128 출력 (값이 순환)
}
}
오버플로우 방지 방법
- 보다 큰 데이터 타입 사용 (int → long, byte → int 등)
- 예외 처리 및 값의 범위 확인
5. Java 형변환 (Type Casting)
형변환(Type Casting)이란, 변수의 데이터 타입을 변경하는 과정입니다. Java에서는 자동 형변환과 강제 형변환이 있습니다.
자동 형변환 (Implicit Casting)
작은 데이터 타입에서 큰 데이터 타입으로 변환 시 자동으로 수행됩니다.
int num = 10;
double d = num; // 자동 형변환 (int → double)
강제 형변환 (Explicit Casting)
큰 데이터 타입에서 작은 데이터 타입으로 변환할 때는 (타입)을 명시해야 합니다.
double d = 9.78;
int num = (int) d; // 강제 형변환 (double → int)
형변환 시 주의할 점
- 데이터 손실 가능성 (double → int 변환 시 소수점 제거됨)
- 범위를 초과하면 오버플로우 발생 가능
728x90
반응형
'이것 저것 개발 공부 > JAVA' 카테고리의 다른 글
[Java] 메소드와 API (0) | 2025.02.26 |
---|---|
[Java] 연산자 (0) | 2025.02.26 |
[JAVA] Math 클래스 (1) | 2025.02.13 |
[JAVA] StringBuilder / StringBuffer 클래스 (1) | 2025.02.13 |
[JAVA] Wrapper 클래스 (0) | 2025.02.13 |