ν”„λ‘œκ·Έλž˜λ° μ–Έμ–΄/μžλ°”

2. λ³€μˆ˜μ™€ μžλ£Œν˜•

alswlfl 2026. 5. 29. 02:38

λ³€μˆ˜λž€ 무엇인가

λ³€μˆ˜: 값을 μ €μž₯ν•  κ³΅κ°„μ˜ 이름

μžλ£Œν˜•: μ–΄λ–€ ν˜•νƒœμ˜ 자료λ₯Ό μ €μž₯ν•  κ²ƒμΈμ§€μ˜ ν˜•νƒœ

// μžλ£Œν˜• λ³€μˆ˜ 이름
int level; // λ³€μˆ˜ μ„ μ–Έ
level = 10; // μ΄ˆκΈ°ν™”

int level = 10; // λ³€μˆ˜ μ„ μ–Έ 및 μ΄ˆκΈ°ν™”

 

[λ³€μˆ˜ 이름 μ œμ•½μ‚¬ν•­]

  • λ³€μˆ˜ 이름은 μ˜λ¬Έμžλ‚˜ 숫자, 특수 문자 $와 _만 μ‚¬μš© κ°€λŠ₯
  • λ³€μˆ˜ 이름은 숫자둜 μ‹œμž‘ X
  • μžλ°”μ—μ„œ 이미 μ‚¬μš© 쀑인 μ˜ˆμ•½μ–΄λŠ” μ‚¬μš© X

[λ³€μˆ˜ 이름 잘 μ§“λŠ” 방법]

  • μ‚¬μš© λͺ©μ μ— 맞게 의미 λΆ€μ—¬ν•΄μ„œ λ§Œλ“œλŠ” 것이 μ’‹μŒ
  • 쀑간에 λ‹€λ₯Έ 뜻의 단어가 λ“±μž₯ν•  λŒ€μ—λŠ” 카멜 ν‘œκΈ°λ²•μœΌλ‘œ μž‘μ„±

κΈ°λ³Έ μžλ£Œν˜•μ˜ μ’…λ₯˜

κΈ°λ³Έ μžλ£Œν˜•: μžλ°” λΌμ΄λΈŒλŸ¬λ¦¬μ—μ„œ 기본으둜 μ œκ³΅ν•˜λ©°, μ–Όλ§ˆλ§ŒνΌμ˜ λ©”λͺ¨λ¦¬λ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν•  것인지가 이미 μ •ν•΄μ Έ 있음

μ°Έμ‘° μžλ£Œν˜•: 클래슀둜, μžλ°”μ—μ„œ μ œκ³΅ν•˜λŠ” 것도 있고, κ°œλ°œμžκ°€ 직접 λ§Œλ“  ν΄λž˜μŠ€λ„ 있음

  μ •μˆ˜ν˜• λ¬Έμžν˜• μ‹€μˆ˜ν˜• λ…Όλ¦¬ν˜•
1λ°”μ΄νŠΈ byte - - boolean
2λ°”μ΄νŠΈ short char - -
3λ°”μ΄νŠΈ int - float -
4λ°”μ΄νŠΈ long - double -

 

μ •μˆ˜ μžλ£Œν˜•

μ–‘μˆ˜, 음수, 0을 λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•μœΌλ‘œ, byteν˜•, shortν˜•, intν˜•, longν˜• 4κ°€μ§€ μžλ£Œν˜•μœΌλ‘œ λ‚˜νƒ€λ‚Ό 수 μžˆλ‹€.

 

λΆ€ν˜Έκ°€ μžˆλŠ” 수λ₯Ό ν‘œν˜„ν•  λ•Œ 맨 μ•žμ˜ λΉ„νŠΈλŠ” λΆ€ν˜Έλ₯Ό λ‚˜νƒ€λ‚Έλ‹€. λΆ€ν˜Έ λΉ„νŠΈκ°€ 0이면 μ–‘μˆ˜, 1이면 μŒμˆ˜μ΄λ‹€. λ˜ν•œ, 0은 λͺ¨λ“  λΉ„νŠΈκ°€ 0μ΄λ―€λ‘œ μ–‘μˆ˜μ˜ λ²”μœ„λŠ” 0을 λΉΌμ•Όν•œλ‹€.

각 μ •μˆ˜ μžλ£Œν˜•μ— 따라 ν‘œν˜„ν•  수 μžˆλŠ” 수의 유효 λ²”μœ„λŠ” λ‹€μŒκ³Ό κ°™λ‹€.

μžλ£Œν˜• λ°”μ΄νŠΈ 크기 수의 λ²”μœ„
byte 1 $-2^7$ ~ $2^7-1$
short 2 $-2^{15}$ ~ $2^{15}-1$
int 4 $-2^{31}$ ~ $2^{31}-1$
long 8 $-2^{63}$ ~ $2^{63}-1$

 

1) byteν˜•

  • 1λ°”μ΄νŠΈλŠ” 8λΉ„νŠΈ
  • λ°”μ΄νŠΈ λ‹¨μœ„μ˜ 정보λ₯Ό μ €μž₯ν•˜κ±°λ‚˜ 톡신할 λ•Œ 주둜 μ‚¬μš©
  • λ²”μœ„λ₯Ό λ„˜μ–΄μ„œλŠ” 값은 ν—ˆμš© X

2) shortν˜•

  • 2λ°”μ΄νŠΈλ‘œ μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” μžλ£Œν˜•
  • λ²”μœ„λ₯Ό λ„˜μ–΄μ„œλŠ” 값은 ν—ˆμš© X

3) intν˜•

  • μ •μˆ˜λ₯Ό ν‘œν˜„ν•  λ•Œ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” μžλ£Œν˜•
  • κ½€ 큰 λ²”μœ„μ˜ μ •μˆ˜ ν‘œν˜„ κ°€λŠ₯
  • μ •μˆ˜ μžλ£Œν˜•μ„ int ν˜•μ„ κ°€μž₯ 많이 μ‚¬μš©ν•˜λŠ” 이유: μ»΄ν“¨ν„°μ—μ„œ μ •μˆ˜λ₯Ό μ—°μ‚°ν•  λ•Œ 4λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ²˜λ¦¬ν•˜λŠ” 것이 κ°€μž₯ 효율적이기 λ•Œλ¬Έ
    • byteν˜• λ³€μˆ˜μ™€ shortν˜• λ³€μˆ˜λ₯Ό λ”ν•˜λŠ” 연산을 μˆ˜ν–‰ν•˜λ©΄, 두 μ •μˆ˜λ₯Ό λ”ν•˜κΈ° μ „ 두 μ •μˆ˜λŠ” λͺ¨λ‘ intν˜•μœΌλ‘œ λ³€ν™˜λ˜μ–΄ λ”ν•œ κ²°κ³Ό 값도 intν˜•μœΌλ‘œ μ €μž₯됨

4) longν˜•

  • μ •μˆ˜λ₯Ό ν‘œν˜„ν•˜λŠ” κ°€μž₯ 큰 λ‹¨μœ„μ˜ μžλ£Œν˜•
  • intν˜• λ²”μœ„λ₯Ό λ„˜μ–΄μ„œλŠ” μ •μˆ˜λ₯Ό μ‚¬μš©ν•  λ•Œ longν˜• μ‚¬μš©
  • μžλ°”λŠ” λͺ¨λ“  μ •μˆ˜ 값을 기본으둜 intν˜•μœΌλ‘œ μ²˜λ¦¬ν•˜κΈ° λ•Œλ¬Έμ— longν˜•μœΌλ‘œ μ²˜λ¦¬ν•˜λΌκ³  μ»΄νŒŒμΌλŸ¬μ—κ²Œ μ•Œλ €μ€˜μ•Ό 함! λ”°λΌμ„œ, longν˜•μ„ λ‚˜νƒ€λ‚΄λŠ” μ‹λ³„μžμΈ Lμ΄λ‚˜ l을 μ‚¬μš©ν•˜λ €λŠ” 숫자 뒀에 λΆ™μž„ ex) long num = 12345678900L;
  • 'long num = 1000;'은 longν˜•μ„ 쓰더라도 였λ₯˜κ°€ λ‚˜μ§€ μ•ŠμŒ. κ·Έ μ΄μœ λŠ” 1000μ΄λΌλŠ” μˆ«μžκ°€ intν˜• λ²”μœ„λ₯Ό λ„˜μ§€ μ•Šκ³  intν˜•μ΄ longν˜•μœΌλ‘œ μžλ™ν˜• λ³€ν™˜λ˜κΈ° λ•Œλ¬Έμž„. 즉, λ²”μœ„ 내뢀에 μžˆλŠ” 값을 μ‚¬μš©ν•  λ•ŒλŠ” μ‹λ³„μž ν•„μš” μ—†μŒ

문자 μžλ£Œν˜•

μ»΄ν“¨ν„°λŠ” 0κ³Ό 1둜만 ν‘œν˜„κ°€λŠ₯ν•˜λ―€λ‘œ, 문자 μ—­μ‹œ 컴퓨터 λ‚΄λΆ€μ—μ„œ ν‘œν˜„ν•  λ•Œ 0κ³Ό 1의 μ‘°ν•©μœΌλ‘œ λ‚˜νƒ€λ‚΄μ•Όν•¨

문자 μ„ΈνŠΈ: μ–΄λ–€ 문자λ₯Ό 컴퓨터 λ‚΄λΆ€μ—μ„œ ν‘œν˜„ν•  λ•Œ νŠΉμ • μ •μˆ˜ 값을 λͺ¨μ•„λ‘” 것

문자 인코딩: 문자λ₯Ό μ •ν•΄μ§„ μ½”λ“œ κ°’μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것

  • 기본이 λ˜λŠ” 문자 인코딩은 μ•„μŠ€ν‚€ μ½”λ“œμž„
    • μ•„μŠ€ν‚€ μ½”λ“œλŠ” 영문자, 숫자, 특수 문자 등을 λ‚˜νƒ€λ‚΄λŠ” 문자 μ„ΈνŠΈ
    • μ•„μŠ€ν‚€ μ½”λ“œλŠ” 1λ°”μ΄νŠΈλ§Œ μ‚¬μš©
  • 각 μ–Έμ–΄μ˜ ν‘œμ€€ 인코딩을 μ •μ˜ν•΄ 놓은 것이 μœ λ‹ˆμ½”λ“œμž„
    • μœ λ‹ˆμ½”λ“œμ˜ 1λ°”μ΄νŠΈλŠ” μ•„μŠ€ν‚€ μ½”λ“œ κ°’κ³Ό ν˜Έν™˜λ˜κ³ , κ·Έ λ°–μ˜ 문자λ₯Ό 2λ°”μ΄νŠΈλ‚˜ κ·Έ μ΄μƒμ˜ μ‘°ν•©μœΌλ‘œ ν‘œν˜„ν•¨
    • μžλ°”λŠ” μœ λ‹ˆμ½”λ“œμ— κΈ°λ°˜ν•˜μ—¬ 문자λ₯Ό ν‘œν˜„ν•˜κΈ° λ•Œλ¬Έμ—, μžλ°”μ˜ 문자 μžλ£Œν˜•μΈ charν˜•μ€ 2λ°”μ΄νŠΈλ₯Ό μ‚¬μš©
    • char myChar = 'A'; 처럼 μ„ μ–Έ κ°€λŠ₯
    • 문자λ₯Ό λ³€μˆ˜μ— λŒ€μž…ν•˜λ©΄ 문자 κ·ΈλŒ€λ‘œ μ €μž₯λ˜λŠ” 것이 μ•„λ‹ˆλΌ, κ·Έ λ¬Έμžμ— ν•΄λ‹Ήν•˜λŠ” μ •μˆ˜ κ°’(μ•„μŠ€ν‚€ μ½”λ“œ κ°’)이 μ €μž₯됨
    • charν˜•μ€ 문자 μžλ£Œν˜•μ΄μ§€λ§Œ 컴퓨터 λ‚΄λΆ€μ—μ„œλŠ” μ •μˆ˜ κ°’μœΌλ‘œ ν‘œν˜„λ˜κΈ° λ•Œλ¬Έμ— μ •μˆ˜ μžλ£Œν˜•μœΌλ‘œ λΆ„λ₯˜ν•˜λŠ” κ²½μš°λ„ μžˆμ§€λ§Œ, charν˜•μ€ 음수 값을 ν‘œν˜„ν•  수 μ—†μŒ

문자 λ””μ½”λ”©: μ½”λ“œ 값을 λ‹€μ‹œ 문자둜 λ³€ν™˜ν•˜λŠ” 것

 

문자λ₯Ό μ‚¬μš©ν•  λ•ŒλŠ” 항상 μž‘μ€ λ”°μ˜΄ν‘œ('')λ₯Ό μ‚¬μš©ν•¨

문자λ₯Ό μ—¬λŸ¬ 개 이은 λ¬Έμžμ—΄μ„ μ‚¬μš©ν•  λ•ŒλŠ” 큰 λ”°μ˜΄ν‘œ("")λ₯Ό μ‚¬μš©ν•˜κ³ , κΈ°λ³Έ μžλ£Œν˜•μœΌλ‘œλŠ” ν‘œν˜„ν•  수 μ—†μŒ. λ˜ν•œ, λ¬Έμžμ—΄ λμ—λŠ” 항상 널 문자(\0)κ°€ 있음(널 λ¬ΈμžλŠ” λ¬Έμžμ—΄μ˜ 끝을 λ‚˜νƒ€λƒ„) → String 클래슀 μ‚¬μš©

 

μ‹€μˆ˜ μžλ£Œν˜•

컴퓨터 λ‚΄λΆ€μ—μ„œλŠ” μ‹€μˆ˜λ₯Ό 뢀동 μ†Œμˆ˜μ  λ°©μ‹μœΌλ‘œ ν‘œν˜„ν•¨

μ‹€μˆ˜ μžλ£Œν˜•μ—λŠ” floatν˜•κ³Ό doubleν˜•μ΄ 있음

floatν˜• = λΆ€ν˜Έ 1λΉ„νŠΈ + μ§€μˆ˜λΆ€ 8λΉ„νŠΈ + κ°€μˆ˜λΆ€ 23λΉ„νŠΈ = 총 32λΉ„νŠΈ(4λ°”μ΄νŠΈ)

doubleν˜• = λΆ€ν˜Έ 1λΉ„νŠΈ + μ§€μˆ˜λΆ€ 11λΉ„νŠΈ + κ°€μˆ˜λΆ€ 52λΉ„νŠΈ = 총 64λΉ„νŠΈ(8λ°”μ΄νŠΈ)

 

μžλ°”μ—μ„œ μ‹€μˆ˜λŠ” doubleν˜•μ„ 기본으둜 μ‚¬μš©ν•¨. floatν˜•μ— λΉ„ν•΄ doubleν˜•μ΄ 더 μ •λ°€ν•˜κ²Œ μ‹€μˆ˜ ν‘œν˜„ κ°€λŠ₯함

λ”°λΌμ„œ, floatν˜•μœΌλ‘œ λŒ€μž…λ˜λŠ” 값은 doubleν˜•μ΄ μ•„λ‹Œ floatν˜• 값이 λŒ€μž…λœλ‹€λŠ” 의미둜 F λ˜λŠ” fλ₯Ό 숫자 뒀에 λΆ™μ—¬μ„œ 식별해주어야 함

논리 μžλ£Œν˜•

논리 μžλ£Œν˜•μ€ μ–΄λ–€ λ³€μˆ˜μ˜ μ°Έ, κ±°μ§“μ˜ 값을 λ‚˜νƒ€λ‚΄λŠ” 데 μ‚¬μš©ν•¨. μ’…λ₯˜λŠ” booleanν˜• ν•œκ°€μ§€μž„

booleanν˜• λ³€μˆ˜λŠ” 1λ°”μ΄νŠΈ 값을 μ €μž₯함


μƒμˆ˜μ™€ λ¦¬ν„°λŸ΄

μƒμˆ˜(constant)

항상 λ³€ν•˜μ§€ μ•ŠλŠ” κ°’μœΌλ‘œ, final μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•΄ 선언함

final double PI = 3.14;

 

  • μƒμˆ˜ 이름은 λŒ€λ¬Έμžλ₯Ό 주둜 μ‚¬μš©ν•˜κ³ , μ—¬λŸ¬ 단어λ₯Ό μ—°κ²°ν•˜λŠ” κ²½μš°μ— _ 기호λ₯Ό μ‚¬μš©ν•˜λ©΄ 보기 μ’‹μŒ
  • ν•œ 번 μ„ μ–Έν•œ μƒμˆ˜λŠ” λ³€ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μ„ μ–Έκ³Ό λ™μ‹œμ— 값을 μ§€μ •ν•˜λŠ” 것이 μ’‹μŒ
  • ν”„λ‘œκ·Έλž¨ λ‚΄λΆ€μ—μ„œ 반볡적으둜 μ‚¬μš©ν•˜κ³ , λ³€ν•˜μ§€ μ•Šμ•„μ•Ό ν•˜λŠ” 값을 μƒμˆ˜λ‘œ μ„ μ–Έν•˜μ—¬ μ‚¬μš©ν•˜λ©΄ μ’‹μŒ

λ¦¬ν„°λŸ΄(literal)

ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©ν•˜λŠ” λͺ¨λ“  숫자, 문자, 논리값을 μΌμ»«λŠ” 말둜, λ¦¬ν„°λŸ΄μ€ ν”„λ‘œκ·Έλž¨μ΄ μ‹œμž‘ν•  λ•Œ μ‹œμŠ€ν…œμ— 같이 λ‘œλ”©λ˜μ–΄ νŠΉμ • λ©”λͺ¨λ¦¬ 곡간인 μƒμˆ˜ ν’€(constant pool)에 λ†“μž„

즉, μˆ«μžκ°€ λ³€μˆ˜μ— λŒ€μž…λ˜λŠ” 과정은 일단 숫자 값이 μ–΄λ”˜κ°€ λ©”λͺ¨λ¦¬μ— μ“°μ—¬ 있고, 이 값이 λ‹€μ‹œ λ³€μˆ˜ λ©”λͺ¨λ¦¬μ— λ³΅μ‚¬λ˜λŠ” κ²ƒμž„


ν˜• λ³€ν™˜

μ •μˆ˜μ™€ μ‹€μˆ˜λ₯Ό λ”ν•œλ‹€κ³  ν•  λ•Œ κ·ΈλŒ€λ‘œ 연산을 μˆ˜ν–‰ν•  수 μ—†κ³  ν•˜λ‚˜μ˜ μžλ£Œν˜•μœΌλ‘œ ν†΅μΌν•œ ν›„ 연산을 해야함. μ΄λ•Œ ν˜• λ³€ν™˜μ΄ 이루어짐

ν˜• λ³€ν™˜μ€ 각 λ³€μˆ˜μ˜ μžλ£Œν˜•μ΄ λ‹€λ₯Ό λ•Œ μžλ£Œν˜•μ„ κ°™κ²Œ λ°”κΎΈλŠ” κ²ƒμœΌλ‘œ, 크게 λ¬΅μ‹œμ  ν˜• λ³€ν™˜(μžλ™ ν˜• λ³€ν™˜)κ³Ό λͺ…μ‹œμ  ν˜• λ³€ν™˜(κ°•μ œ ν˜• λ³€ν™˜)으둜 ꡬ별됨

 

[ν˜• λ³€ν™˜μ˜ κΈ°λ³Έ 원칙]

  • λ°”μ΄νŠΈ 크기가 μž‘μ€ μžλ£Œν˜•μ—μ„œ 큰 μžλ£Œν˜•μœΌλ‘œ ν˜• λ³€ν™˜μ€ μžλ™μœΌλ‘œ 이루어짐
  • 덜 μ •λ°€ν•œ μžλ£Œν˜•μ—μ„œ 더 μ •λ°€ν•œ μžλ£Œν˜•μœΌλ‘œ ν˜• λ³€ν™˜μ€ μžλ™μœΌλ‘œ 이루어짐

μžλ™ ν˜• λ³€ν™˜μ΄ μ΄λ£¨μ–΄μ§€λŠ” 관계

λ¬΅μ‹œμ  ν˜• λ³€ν™˜(=μžλ™ ν˜• λ³€ν™˜)

1. λ°”μ΄νŠΈ 크기가 μž‘μ€ μžλ£Œν˜•μ—μ„œ 큰 μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

byte bNum = 10;
int iNum = bNum; // byteν˜• λ³€μˆ˜ bNum 값을 intν˜• λ³€μˆ˜ iNum에 λŒ€μž…

 

2. 덜 μ •λ°€ν•œ μžλ£Œν˜•μ—μ„œ 더 μ •λ°€ν•œ μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

int iNum2 = 20;
float fNum = iNum2;

 

3. μ—°μ‚° 쀑에 μžλ™ λ³€ν™˜λ˜λŠ” 경우

int iNum = 20;
float fNum = iNum;
double dNum;
dNum = fNum + iNum;
// iNum이 floatν˜•μœΌλ‘œ λ³€ν™˜λ˜κ³ , 두 λ³€μˆ˜λ₯Ό λ”ν•œ 값이 doubleν˜•μœΌλ‘œ λ³€ν™˜λ¨

 

λͺ…μ‹œμ  ν˜• λ³€ν™˜(=κ°•μ œ ν˜• λ³€ν™˜)

1. λ°”μ΄νŠΈ 크기가 큰 μžλ£Œν˜•μ—μ„œ μž‘μ€ μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

int iNum = 10;
byte bNum = (byte)iNum; // κ°•μ œλ‘œ ν˜•μ„ λ°”κΎΈλ €λ©΄ λ°”κΏ€ ν˜•μ„ κ΄„ν˜Έλ‘œ μ¨μ„œ λͺ…μ‹œν•΄μ•Ό 함

 

2. 더 μ •λ°€ν•œ μžλ£Œν˜•μ—μ„œ 덜 μ •λ°€ν•œ μžλ£Œν˜•μœΌλ‘œ λŒ€μž…ν•˜λŠ” 경우

double dNum = 3.14;
int iNum2 = (int)dNum;