Java
[Java][Tutorial] 1-2. Learning the Java Language: Language Basics
noahkim_
2024. 1. 14. 21:29
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
출처