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

 

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 = += -= *= /= %= &= ^= |= <<= >>= >>>=

 

 

 

출처