1. 자료형
자바에서 자료형(Data Type)은 변수에 저장될 값의 크기와 종류를 정의한다. 자바는 기본 자료형(Primitive Type)과 참조 자료형(Reference Type) 두 가지 주요 분류로 나눌 수 있다.
1) 기본 자료형 (Primitive Type)
기본 자료형은 자바에서 미리 정의된 가장 단순한 형태의 자료형으로, 값 자체를 직접 메모리에 저장한다. 크게 논리형, 숫자형(정수형과 실수형), 문자형으로 나눌 수 있다.
- 논리형 (Boolean Type)
- boolean: true 또는 false 값만 가질 수 있다.
- 숫자형 (Numeric Type)
- 정수형 (Integral Type)
- byte: 1바이트 크기, -128 ~ 127 범위의 정수를 저장한다.
- short: 2바이트 크기, -32,768 ~ 32,767 범위의 정수를 저장한다.
- int: 4바이트 크기, -2^31 ~ 2^31-1 범위의 정수를 저장한다.
- long: 8바이트 크기, -2^63 ~ 2^63-1 범위의 정수를 저장한다.
- 실수형 (Floating Point Type)
- float: 4바이트 크기, 소수점 이하 7자리까지 표현 가능하다.
- double: 8바이트 크기, 소수점 이하 15자리까지 표현 가능하다.
- 정수형 (Integral Type)
- 문자형 (Character Type)
- char: 2바이트 크기로 하나의 문자(유니코드)를 저장합니다. 0~65,535 범위의 값을 가질 수 있다.
[기본 자료형 메모리 사용 크기 및 범위]
byte | 1바이트 | -128 ~ 127 |
char | 2바이트 | 0 ~ 65,535 |
short | 2바이트 | -32,768 ~ 32,767 |
int | 4바이트 | -2^31 ~ 2^31-1 |
long | 8바이트 | -2^63 ~ 2^63-1 |
float | 4바이트 | 소수점 이하 7자리 정밀도 |
double | 8바이트 | 소수점 이하 15자리 정밀도 |
boolean | 1바이트 | true 또는 false |
2) 참조 자료형 (Reference Type)
참조 자료형은 객체의 메모리 주소를 저장한다. 실제 값이 아닌, 값이 저장된 메모리 위치를 가리키기 때문에 참조형이라고 한다. 참조 자료형에는 클래스(Class), 인터페이스(Interface), 배열(Array), 열거형(Enum)이 포함된다.
- 클래스 타입 (Class Type)
사용자 정의 클래스나 API에서 제공하는 클래스의 객체를 참조한다. - 인터페이스 타입 (Interface Type)
인터페이스의 구현 객체를 참조한다. - 배열 타입 (Array Type)
같은 자료형의 값들이 순서대로 저장된 배열을 참조한다. - 열거형 타입 (Enum Type)
특정 상수들의 집합을 참조한다.
3) 리터럴(Literal)과 상수(Constant)
3-1) 리터럴(Literal) : 리터럴은 변하지 않는 값, 즉 값 그 자체를 의미하며 이름이 없다. 예를 들어, 아래의 리터럴들은 각 자료형에 해당하는 값이다
- 정수형: 5 (기본적으로 int로 인식)
- 실수형: 2.5 (기본적으로 double로 인식)
- 문자형: 'a' (하나의 문자로 char에 해당)
- 문자열: "abc" (여러 문자의 조합으로 String에 해당)
- 논리형: true 또는 false (boolean 값)
int num = 5; // 정수형 리터럴 5를 변수 num에 저장
System.out.println(num); // 출력: 5
3-2) 상수(Constant) : 상수는 변하지 않는 값이지만, 리터럴과 달리 이름이 있다. 상수는 한 번 초기화되면 값이 바뀌지 않으며, 자바에서 상수를 정의할 때는 final 키워드를 사용한다.
- final 키워드를 사용하여 상수를 선언한다. 상수는 한 번 초기화된 이후에 값을 변경할 수 없다.
- 상수명은 관례적으로 모두 대문자로 작성하며, 단어 사이에는 _를 사용한다.
- 상수를 변경하려고 시도하면 컴파일 에러가 발생한다.
public class ConstantExample {
public static void main(String[] args) {
// 상수 선언
final int MAX_VALUE = 100; // 한 번 초기화된 후 값이 변경되지 않음
System.out.println("상수 MAX_VALUE: " + MAX_VALUE);
// 상수 값 변경 시도 (컴파일 에러 발생)
// MAX_VALUE = 200; // 오류: 상수는 값이 변경될 수 없음
}
}
4) 문자 코드표 (Unicode)와 문자형
자바는 유니코드(Unicode)를 사용하여 문자형 데이터를 저장한다. 유니코드는 2바이트 크기로 전 세계의 문자들을 표현할 수 있다. 이 때 char는 음수 값을 허용하지 않는다.
char ch = 'A'; // 문자 리터럴
char ch2 = 65; // 숫자로 표현된 문자 ('A'의 유니코드 값은 65)
System.out.println(ch); // 출력: A
System.out.println(ch2); // 출력: A
char ch3 = -5; // 에러 발생: char는 음수를 표현할 수 없습니다.
5) 실수형 (Floating Point)
자바에서 실수형은 float과 double 두 가지가 있으며, double이 기본 실수형이다. 따라서 float 타입의 리터럴을 사용할 때는 F 또는 f 접미사를 붙여야 한다. double은 소수점 아래 15자리까지 정밀하게 표현할 수 있으며, float은 약 7자리까지만 표현 가능하다. 참고로 접미사는 소문자 대문자 둘 다 가능이지만 대문자가 눈에 더 잘보여서 선호한다.
double one = 2.5; // 실수형 리터럴 기본값은 double
System.out.println(one); // 출력: 2.5
float two = 2.5F; // float형 리터럴은 F 접미사 필요
System.out.println(two); // 출력: 2.5
double three = 2.1234567891234567;
System.out.println(three); // 출력: 2.1234567891234567 (15자리까지 표현)
float four = 2.1234567891234567F;
System.out.println(four); // 출력: 2.1234567 (7자리까지 표현)
2. 변수 (Variables)
변수는 메모리(RAM)에 이름을 부여한 공간으로, 특정 값을 저장하고 사용하는 데 활용된다. 자바에서 변수를 사용하려면 먼저 선언하고 초기화해야 한다.
int num; // 변수 선언
num = 5; // 변수 초기화
변수를 선언할 때는 자료형과 변수명을 명시하고, 값을 할당하여 초기화한다. 변수가 선언되면 해당 이름을 통해 메모리에 저장된 값에 접근할 수 있다.
1) 변수의 종류
- 지역 변수: 메서드 내에서 선언되며, 메서드가 종료되면 소멸된다.
- 전역 변수(인스턴스 변수): 클래스 내에서 선언되며, 객체가 생성될 때 할당된다.
- 상수 (Constant): 값이 한 번 초기화되면 변경되지 않는 변수이다. 상수는 final 키워드를 사용하여 선언한다.
2) 변수명 명명 규칙
- 문자로 시작: 변수명은 숫자로 시작할 수 없다.
- 대소문자 구분: num과 Num은 서로 다른 변수로 인식된다.
- 키워드 사용 불가: boolean, int와 같은 자바 키워드는 변수명으로 사용할 수 없다.
- 특수문자 제한: _와 $만 사용할 수 있다.
- 의미 있는 이름: 변수명은 변수의 역할을 알 수 있도록 의미 있는 이름을 사용하는 것이 좋다.
3) 변수 표기법
- 카멜 표기법 (camelCase): 소문자로 시작하고, 단어의 첫 글자는 대문자로 적는다. 예: numOneValue
- 스네이크 표기법 (snake_case): 단어 사이를 _로 구분한다. 예: num_one_value
- 파스칼 표기법 (PascalCase): 첫 글자를 대문자로 적는다. 주로 클래스 이름에 사용된다. 예: NumOneValue
- 케밥 표기법 (kebab-case): 단어를 -로 구분한다. 주로 CSS 클래스명에 사용된다. 예: num-one-value
'Programming Language > Java' 카테고리의 다른 글
[Java/개념] 타입 변환 (Type Conversion) (0) | 2024.10.07 |
---|---|
[Java/개념] 자바 연산자 (Operators) (0) | 2024.10.07 |
[Java/개념]JDK와 JRE의 차이 (0) | 2024.10.07 |
[Java/개념] JVM(Java Virtual Machine) 동작 과정 (1) | 2024.10.07 |
[Java/개념] 자바 가상 머신(Java Virtual Machine) (2) | 2024.10.04 |