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

 

출처