[Java] Ch.2 λ³€μˆ˜

yoons(μ΄μœ€μ„œ)Β·2024λ…„ 6μ›” 21일

[Java] μžλ°”μ˜ 정석

λͺ©λ‘ 보기
2/14

πŸ‘‰πŸ» 이 글은 μžλ°”μ˜ 정석(3판) Chapter.2의 λ‚΄μš©μ„ κ³΅λΆ€ν•˜λ©° μ“΄ κΈ€μž…λ‹ˆλ‹€.

πŸ“Œ λ³€μˆ˜(variable)λž€?

" 단 ν•˜λ‚˜μ˜ 값을 μ €μž₯ν•  수 μžˆλŠ” λ©”λͺ¨λ¦¬ 곡간. "

πŸ“– λ³€μˆ˜ μ„ μ–Έ

int age; // age λΌλŠ” μ΄λ¦„μ˜ λ³€μˆ˜ μ„ μ–Έ

int -> λ³€μˆ˜ νƒ€μž…
age -> λ³€μˆ˜ 이름 : λ©”λͺ¨λ¦¬ 곡간에 이름을 뢙인 것.

λ³€μˆ˜ 이름을 μ„€μ •ν•  λ•Œμ— 암묡적 κ·œμΉ™

  1. 클래슀 이름 μ²«κΈ€μžλŠ” λŒ€λ¬Έμž
  2. λ³€μˆ˜μ™€ λ©”μ„œλ“œμ˜ 첫 κΈ€μžλŠ” 항상 μ†Œλ¬Έμž
  3. μƒμˆ˜ 이름은 λͺ¨λ‘ λŒ€λ¬Έμž (PI, MAX_NUMBER)

πŸ“– λ³€μˆ˜ μ΄ˆκΈ°ν™”

λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  κ·Έ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μ „μ—λŠ” λ°˜λ“œμ‹œ λ³€μˆ˜λ₯Ό 'μ΄ˆκΈ°ν™”(initialization)' ν•΄μ•Ό ν•œλ‹€. ( μ΄ˆκΈ°ν™”λž€, μ‚¬μš©ν•˜κΈ° 전에 처음으둜 값을 μ €μž₯ν•˜λŠ” 것. )
λ³€μˆ˜μ— 값을 μ €μž₯ν•  λ•ŒλŠ” λŒ€μž… μ—°μ‚°μž =이용.

int x = 0, y = 0;

μ—¬λŸ¬ λ³€μˆ˜ ν•œ 쀄 μ„ μ–Έ κ°€λŠ₯.

πŸ“Œ λ³€μˆ˜ νƒ€μž…

μš°λ¦¬κ°€ μ‚¬μš©ν•˜λŠ” κ°’μ˜ νƒ€μž…μ€ 크게 λ¬Έμžμ™€ 숫자(μ •μˆ˜, μ‹€μˆ˜)둜 λ‚˜λ‰œλ‹€.
μ΄λŸ¬ν•œ κ°’μ˜ μ’…λ₯˜μ— 따라 값이 μ €μž₯될 κ³΅κ°„μ˜ 크기와 μ €μž₯ν˜•μ‹μ„ μ •μ˜ν•œ 것이 μžλ£Œν˜•μ΄λ‹€.
-> μžλ£Œν˜•μ€ 크게 κΈ°λ³Έν˜•κ³Ό μ°Έμ‘°ν˜•μœΌλ‘œ λ‚˜λ‰œλ‹€.

β­κΈ°λ³Έν˜• (primitive type)

μ‹€μ œκ°’(data) μ €μž₯
총 8개의 νƒ€μž….

1 byte2 byte4 byte8 byte
λ…Όλ¦¬ν˜•boolean
λ¬Έμžν˜•char
μ •μˆ˜ν˜•byteshortintlong
μ‹€μˆ˜ν˜•floatdouble

-> intν˜•κ³Ό doubleν˜•μ΄ κΈ°λ³Έ μžλ£Œν˜•μ΄λ‹€.

  1. boolean (λ…Όλ¦¬ν˜•)
    true / false
    defaultλŠ” false

  2. char (λ¬Έμžν˜•)
    사싀 λ¬Έμžκ°€ μ•„λ‹Œ μœ λ‹ˆμ½”λ“œ(μ •μˆ˜)κ°€ μ €μž₯λœλ‹€.

    • 인코딩과 λ””μ½”λ”©(encoding & decoding)
      'A' -> 65 (인코딩)
      65 -> 'A' (λ””μ½”λ”©)
  3. byte, short, int, long (μ •μˆ˜ν˜•)
    πŸ‘‰πŸ» JVM의 ν”Όμ—°μ‚°μž μŠ€νƒμ΄ ν”Όμ—°μ‚°μžλ₯Ό 4λ°”μ΄νŠΈ λ‹¨μœ„λ‘œ μ €μž₯ν•˜κΈ° λ•Œλ¬Έμ— 크기가 4λ°”μ΄νŠΈλ³΄λ‹€ μž‘μ€ μžλ£Œν˜•μ˜ 값을 계산할 λ•ŒλŠ” 4λ°”μ΄νŠΈλ‘œ λ³€ν™˜ν•˜μ—¬ κ³„μ‚°ν•˜λ―€λ‘œ 였히렀 intλ₯Ό μ‚¬μš©ν•˜λŠ”κ²ƒμ΄ νš¨μœ¨μ μ΄λ‹€.

    intλ²”μœ„ λ²—μ–΄λ‚˜λ©΄ long, long λ²—μ–΄λ‚˜λ©΄ μ‹€μˆ˜ν˜•νƒ€μž…μ΄λ‚˜ BigInteger.

  4. float, double (μ‹€μˆ˜ν˜•)

⭐ μ°Έμ‘°ν˜• (reference type)

객체의 μ£Όμ†Œ μ €μž₯. 8개의 κΈ°λ³Έν˜•μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€ νƒ€μž….
νƒ€μž…μœΌλ‘œ 클래슀 이름 μ‚¬μš©

	Date today = new Date();	// Date객체λ₯Ό μƒμ„±ν•΄μ„œ, κ·Έ μ£Όμ†Œλ₯Ό today에 μ €μž₯ (μ°Έμ‘°λ³€μˆ˜μ˜ μ΄ˆκΈ°ν™”)

null λ˜λŠ” 객체 μ£Όμ†Œ(4 byte μ •μˆ˜)λ₯Ό κ°’μœΌλ‘œ 가짐.

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

  • μƒμˆ˜(constant)
final int MAX_SPEED = 10;

final ν‚€μ›Œλ“œ μ‚¬μš©
λ°˜λ“œμ‹œ μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•œλ‹€.
κ°’ λ³€κ²½ ν—ˆμš© X

  • λ¦¬ν„°λŸ΄(literal)
    κ·Έ 자체둜 값을 μ˜λ―Έν•˜λŠ” 것
    • λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄
      λ¬Έμžμ—΄ + any type ➑️ λ¬Έμžμ—΄ + λ¬Έμžμ—΄ ➑️ λ¬Έμžμ—΄
      cf ) κΈ°λ³Έν˜• νƒ€μž…μ˜ 값을 λ¬Έμžμ—΄λ‘œ λ³€ν™˜ν•  λ•ŒλŠ” ("")을 더해주면 λœλ‹€.

πŸ“– 좜λ ₯

  • System.out.printf()
	System.out.printf("age: %d", age);
    System.out.printf("age: %d year: %d", age, 2017);

%d booleanν˜•μ‹μœΌλ‘œ 좜λ ₯
%b 10μ§„ μ •μˆ˜μ˜ ν˜•μ‹
%o 8μ§„ μ •μˆ˜μ˜ ν˜•μ‹
%x 16μ§„ μ •μˆ˜μ˜ ν˜•μ‹
%c 문자둜 좜λ ₯
%s λ¬Έμžμ—΄λ‘œ 좜λ ₯
%e, %E μ§€μˆ˜ ν‘œν˜„μ‹μ˜ ν˜•μ‹
%f 뢀동 μ†Œμˆ˜μ  ν˜•μ‹

  • Scanner
	import java.util.*;
    Scanner scanner = new Scanner(System.in);

πŸ“– 진법

  • bit와 bite
    1 byte = 8 bit
    cf ) word : 'CPUκ°€ ν•œ λ²ˆμ— μ²˜λ¦¬ν•  수 μžˆλŠ” λ°μ΄ν„°μ˜ 크기'
profile
κ°œλ°œκ³΅λΆ€ν•˜λŠ” 잠만보

0개의 λŒ“κΈ€