The Java Tutorials have been written for JDK 8
2. Language Basics
Variables
- 자료를 저장하기 위한 메모리 공간 입니다.
- 타입에 따른 메모리 크기가 할당됩니다. (값 X)
member variable
- Instance Variables (Non-Static Fields) : 인스턴스 당 가지는 유일한 변수
- 생성 위치
- 객체별로 heap에 생성됩니다.
- 생성 위치
- Class Variables (Static Fields) : 클래스 당 하나만 존재하는 변수
- 생성시기
- 클래스 로더에 의해 클래스가 로딩될 때 생성됩니다.
- 생성 위치
- 클래스별로 heap에 생성됩니다.
- 공유변수
- 모든 인스턴스에서 공유됩니다.
- 거의 변경되지 않는 변수값에 사용합니다.
- 생성시기
local variable
- 클래스 영역 이외의 모든 중괄호 안에 선언되는 변수들입니다.
- 생성 시기
- 선언된 라인이 실행될 때 생성됩니다.
- 생성 위치
- Stack Frame 내부에 생성됩니다.
- 내부에서만 사용가능합니다.
- 외부에서 접근이 불가능합니다.
- 소멸시기
- 중괄호 블록을 벗어날 때 소멸됩니다.
- 주의사항
- 사용 전, 명시적 초기화가 필요합니다.
Type
Java는 정적 타입 언어입니다.
- 변수 정의 시 이름, 타입이 필요합니다.
primitive type (기본형)
- 기본 데이터 타입입니다.
- 자신만의 고유한 값을 가지며, 공유되지 않습니다.
- null 값 할당 불가
- underscore 사용 가능 (delimiter)
구분 | Type | bit 수 | 값 | 설명 | literal | 기본값 |
논리형 | 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 |
int dec = 26; int hex = 0x1a; int bin = 0b11010; |
0 | |
long | 64 | -2^63 ~ 2^63-1 | java 8 이후로 unsigned 사용 가능 - Long.parseUnsignedLong int 범위를 넘어서는 리터럴 값 할당 시 - 접미사('L')를 붙여야 합니다. |
long hex = 0xFF_EC; | 0L | |
실수형 | float | 32 | 32bit (단정밀도) | 부동소수점(IEEE 754) - 정밀 계산에 부적합 float 리터럴 값 할당 시 - 접미사('F')를 붙여야 합니다. - float 타입의 형변환이 필요합니다. |
float val = (float) 1.2e2; float val2 = 1.2e2f; |
0.0f |
double (기본 타입) |
64 | 64bit (배정밀도) | 부동소수점(IEEE 754) - 정밀 계산에 부적합 double 리터럴 값 할당 시 - 접미사('D') 사용은 optional. |
double val = 1.23e2; double val2 = 1.2D; |
0.0D | |
문자형 | char | 16 | \u0000(0) ~ \uffff(65,535) | 단일 유니코드 문자 16bit - \u : Unicode Escape |
char c = '\u0000'; | '\u0000' |
reference type (참조형)
- 크기가 미리 정해질 수 없는 데이터를 표현하는 타입입니다.
- 실제 값을 참조할 수 있는 주소가 저장됩니다.
Naming
- 대소문자 구분
- 시작 문자
- 유니코드 문자와 숫자로 구성될 수 있습니다.
- 반드시 문자, 달러 기호("$"), 또는 밑줄("")로 시작해야 합니다.
- 변수가 상수 값을 저장하는 경우
- 모든 문자를 대문자로 작성하고 단어 사이에 밑줄을 사용합니다.
- 예: NUM_GEARS
Operators
Precedence
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 | = += -= *= /= %= &= ^= |= <<= >>= >>>= |
출처
'Java' 카테고리의 다른 글
[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. 스레드: 동기화 (0) | 2023.11.30 |
[Java의 정석] 15-6. 입출력: Serialization (0) | 2023.11.29 |
[Java의 정석] 15-5. 입출력: File (1) | 2023.11.29 |