The Java Tutorials have been written for JDK 8
1. Variables
- 자료를 저장하기 위한 메모리 공간 입니다.
- 타입에 따른 메모리가 할당됩니다.
member variable
| 항목 | Instance Variable | Class Variable (Static Field) | 
| 정의 | 인스턴스마다 개별로 존재하는 변수 | 클래스당 하나만 존재하는 변수 | 
| 생성 시기 | 객체가 생성될 때 | 클래스가 JVM에 로딩될 때 | 
| 생성 위치 | 각각의 객체별로 Heap 메모리에 생성됨 | 클래스 영역 또는 Heap의 메서드 영역에 생성됨 (클래스별) | 
| 공유 여부 | 공유되지 않음 | 모든 인스턴스가 같은 변수를 공유함 | 
| 사용 예시 | 개별 사용자 이름, 나이 등 | 전역 설정값, 공통 카운터, 상수 등 | 
| 값 변경 | 각 인스턴스가 자유롭게 변경 가능 | 하나가 바꾸면 모두에게 반영됨 | 
| 기타 특징 | 상태를 표현하는 데 사용 | 거의 바뀌지 않는 값에 적합 | 
local variable
- 모든 중괄호 안에 선언되는 변수들입니다. (클래스 영역 이외)
| 항목 | 설명 | 
| 생성 시기 | 해당 코드 라인이 실행될 때 생성됨 | 
| 생성 위치 | Stack Frame 내부에 저장됨 | 
| 접근 범위 | 선언된 블록 내에서만 사용 가능 | 
| 소멸 시기 | 블록을 벗어나면 즉시 소멸 | 
| 초기화 필요 여부 | 반드시 명시적으로 초기화 후 사용해야 함 | 
| 기타 특징 | 내부에서 주로 사용됨 (메서드, 생성자, 제어문) | 
2. Type
Java는 정적 타입 언어입니다.
- 변수 정의 시 이름, 타입이 필요합니다.
Primitive type (기본형)
- 기본 데이터 타입입니다.
- 자신만의 고유한 값을 가지며, 공유되지 않습니다.
- null 값 할당 불가
- underscore 사용 가능 (delimiter)
| 구분 | Type | bit 수 | 값 | 설명 | 기본값 | 
| 논리형 | boolean | true / false | 크기가 정확히 정의되어 있지 않음 | FALSE | |
| 정수형 | byte | 8 | -2^7 ~ 2^7-1 | 메모리 절약이 필요한 큰 배열에 적합 | 0 | 
| short | 16 | -2^15 ~ 2^15-1 | 메모리 절약이 필요한 큰 배열에 적합 | 0 | |
| int (기본 타입) | 32 | -2^31 ~ 2^31-1 | java 8 이후로 unsigned 사용 가능 - Integer.parseUnsignedInt | 0 | |
| long | 64 | -2^63 ~ 2^63-1 | java 8 이후로 unsigned 사용 가능 - Long.parseUnsignedLong int 범위를 넘어서는 리터럴 값 할당 시 - 접미사('L')를 붙여야 합니다. | 0L | |
| 실수형 | float | 32 | 32bit (단정밀도) | 부동소수점(IEEE 754) - 정밀 계산에 부적합 리터럴 값 할당 시 - 접미사('F')를 붙여야 합니다. - float 타입의 형변환이 필요합니다. | 0.0f | 
| double (기본 타입) | 64 | 64bit (배정밀도) | 부동소수점(IEEE 754) - 정밀 계산에 부적합 리터럴 값 할당 시 - 접미사('D') 사용은 optional | 0.0D | |
| 문자형 | char | 16 | \u0000(0) ~ \uffff(65,535) | 단일 유니코드 문자 16bit - \u : Unicode Escape | \u0000' | 
예) 리터럴 표기
더보기
int dec = 26;
int hex = 0x1a;
int bin = 0b11010;
long hex = 0xFF_EC;
float val = (float) 1.2e2;
float val2 = 1.2e2f;
double val = 1.23e2;
double val2 = 1.2D;
char c = '\u0000';
Reference type (참조형)
- 크기가 미리 정해질 수 없는 데이터를 표현하는 타입입니다.
- 실제 값을 참조할 수 있는 주소가 저장됩니다.
3. Operators
| Operator | Precedence | 
| postfix | expr++ expr-- | 
| unary | ++expr --expr +expr -expr ~ ! | 
| multiplicative | * / % | 
| additive | + - | 
| shift | << >> >>> | 
| relational | < > <= >= instanceof | 
| equality | == != | 
| bitwise AND | & | 
| bitwise exclusive OR | ^ | 
| bitwise inclusive OR | | | 
| logical AND | && | 
| logical OR | || | 
| ternary | ? : | 
| assignment | = += -= *= /= %= &= ^= |= <<= >>= >>>= | 
4. Naming
- 대소문자 구분
- 시작 문자
- 유니코드 문자와 숫자로 구성될 수 있습니다.
- 반드시 문자, 달러 기호("$"), 또는 밑줄("")로 시작해야 합니다.
 
- 변수가 상수 값을 저장하는 경우
- 모든 문자를 대문자로 작성하고 단어 사이에 밑줄을 사용합니다.
- 예: NUM_GEARS
 
출처
'Java' 카테고리의 다른 글
| [JVM 밑바닥까지 파헤치기] 1. 자바 기술 시스템 소개 (3) | 2024.12.19 | 
|---|---|
| [Java][Tutorial] 1-3. Learning the Java Language: Classes and Objects (0) | 2024.01.14 | 
| [Java의 정석] 13-3. 스레드: 실행 제어 (1) | 2023.11.30 | 
| [Java의 정석] 13-4. 스레드: 동기화 (1) | 2023.11.30 | 
| [Java의 정석] 15-6. 입출력: Serialization (0) | 2023.11.29 |