๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

Java/Java์˜ ์ •์„

Chapter 09 - java.lang ํŒจํ‚ค์ง€์™€ ์œ ์šฉํ•œ ํด๋ž˜์Šค

Chapter 09 - java.lang ํŒจํ‚ค์ง€์™€ ์œ ์šฉํ•œ ํด๋ž˜์Šค

1. java.lang ํŒจํ‚ค์ง€

  • ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ๊ฐ€์žฅ ๊ธฐ๋ณธ์ด ๋˜๋Š” ํด๋ž˜์Šค๋“ค ํฌํ•จ
  • import๋ฌธ ์—†์ด๋„ ์‚ฌ์šฉ ๊ฐ€๋Šฅ

1.1 Object ํด๋ž˜์Šค

Object ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ

  • protected Object clone() : ๊ฐ์ฒด ์ž์‹ ์˜ ๋ณต์‚ฌ๋ณธ์„ ๋ฐ˜ํ™˜
  • public boolean equals(Object obj) : ๊ฐ์ฒด ์ž์‹ ๊ณผ ๊ฐ์ฒด obj๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด ์—ฌ๋ถ€ ๋ฐ˜ํ™˜
  • protected void finalize() : ๊ฐ์ฒด๊ฐ€ ์†Œ๋ฉธ๋  ๋•Œ ๊ฐ€๋น„์ง€ ์ปฌ๋ž™ํ„ฐ์—์„œ ์ž๋™ ํ˜ธ์ถœ๋˜๋ฉฐ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•  ์ฝ”๋“œ๊ฐ€ ์žˆ์„ ์‹œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ (๊ฑฐ์˜ ์‚ฌ์šฉ X)
  • public Class getClass() : ๊ฐ์ฒด ์ž์‹ ์˜ ํด๋ž˜์Šค ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” Class ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜
  • public int hashCode() : ๊ฐ์ฒด ์ž์‹ ์˜ ํ•ด์‹œ์ฝ”๋“œ ๋ฐ˜ํ™˜
  • public String toString() : ๊ฐ์ฒด ์ž์‹ ์˜ ์ •๋ณด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
  • public void notify() : ๊ฐ์ฒด ์ž์‹ ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ์“ฐ๋ ˆ๋“œ๋ฅผ ํ•˜๋‚˜๋งŒ ๊นจ์›€
  • public void notifyAll() : ๊ฐ์ฒด ์ž์‹ ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋ฅผ ๊นจ์›€
  • public void wait(), public void wait(long timeout), public void wait(long timeout, int nanos) : ๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๊ฐ€ notify()๋‚˜ notifyAll()์„ ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฌดํ•œํžˆ ๋˜๋Š” ์ง€์ •๋œ ์‹œ๊ฐ„ ๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•จ

eqauls(Object obj)

  • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด์˜ ์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„์„œ ๋น„๊ต ํ›„ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ boolean ๊ฐ’์œผ๋กœ ์•Œ๋ ค์คŒ
  • ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐ์ฒด๋Š” false
  • ์ฐธ์กฐ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’(์ฃผ์†Ÿ๊ฐ’)์œผ๋กœ ๋น„๊ต
  • equals ๋ฉ”์„œ๋“œ๋Š” ์˜ค๋ฒ„๋ผ์ด๋”ฉ์œผ๋กœ ์ฃผ์†Œ๊ฐ€ ์•„๋Š” ๊ฐ์ฒด์— ์ €์žฅ๋œ ๋‚ด์šฉ์„ ๋น„๊ตํ•˜๋„๋ก ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

hashCode()

  • ํ•ด์‹ฑ ๊ธฐ๋ฒ•์— ์‚ฌ์šฉ๋˜๋Š” ํ•ด์‹œํ•จ์ˆ˜(hash function)์„ ๊ตฌํ˜„ํ•œ ๊ฒƒ
  • Object ํด๋ž˜์Šค์— ์ •์˜๋œ hashCode() ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์˜ ์ฃผ์†Ÿ๊ฐ’์œผ๋กœ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋ฐ˜ํ™˜
    • ํ•ด์‹œ์ฝ”๋“œ๋Š” 4Byte์ด๋ฏ€๋กœ 32bit JVM์—์„œ๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์—†์ง€๋งŒ 64bit JVM์—์„œ๋Š” ์ค‘๋ณต๋  ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฐ์ฒด์˜ ๊ฐ™๊ณ  ๋‹ค๋ฆ„์„ ํŒ๋‹จํ•˜๊ธฐ ์œ„ํ•ด์„  eqauls() ๋ฉ”์„œ๋“œ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ hashCode() ๋ฉ”์„œ๋“œ๋„ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผ ํ•จ
    • ๊ฐ™์€ ๊ฐ์ฒด๋ผ๋ฉด hashCode() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ์˜ ๊ฒฐ๊ณผ ๊ฐ’์ธ ํ•ด์‹œ์ฝ”๋“œ๋„ ๊ฐ™์•„์•ผ ํ•˜๋ฏ€๋กœ
  • String ํด๋ž˜์Šค๋Š” ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ๊ฐ™์œผ๋ฉด ๋™์ผํ•œ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋“œ ๋˜์–ด ์žˆ์Œ
    • ๋ฐ˜๋ฉด System.identityHashCode(Object x) ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•ด ํ•ญ์ƒ ๋‹ค๋ฅธ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•˜๋Š” ๊ฒƒ์„ ๋ณด์žฅ

toString()

  • ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ œ๊ณต
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์ง€ ์•Š์œผ๋ฉด ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ 16์ง„์ˆ˜์˜ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
  • Object ํด๋ž˜์Šค์˜ toString() ๋ฉ”์„œ๋“œ์˜ ์ ‘๊ทผ ์ œ์–ด์ž๊ฐ€ public์ด๋ฏ€๋กœ ๋ชจ๋“  ์ž์† ํด๋ž˜์Šค๋Š” ์ ‘๊ทผ ์ œ์–ด์ž๋ฅผ public์œผ๋กœ ํ•ด์•ผ ํ•จ

clone()

  • ์ž์‹ ์„ ๋ณต์ œํ•˜์—ฌ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ
  • ์ธ์Šคํ„ด์Šค์˜ ๊ฐ’๋งŒ ๋ณต์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ฐธ์กฐํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๊ฐ€ ์žˆ๋Š” ํด๋ž˜์Šค๋Š” ์™„์ „ํ•œ ์ธ์Šคํ„ด์Šค ๋ณต์ œ๊ฐ€ ์ด๋ฃจ์–ด์ง€์ง€ ์•Š์Œ
    • clone() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์„œ ํ•ด๊ฒฐํ•ด์•ผ ํ•จ
  • clone()์„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ Cloneable ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•œ ๋’ค ์ ‘๊ทผ์ž๋ฅผ public์œผ๋กœ ์˜ค๋ฒ„๋ผ์ด๋”ฉ(๋‹ค๋ฅธ ํด๋ž˜์Šค์—์„œ clone() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋„๋ก)
    • ์ธ์Šคํ„ด์Šค์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณดํ˜ธํ•˜๊ธฐ ์œ„ํ•ด ์ด ๊ฐ™์€ ์ œ์•ฝ์„ ๋‘ 

๊ณต๋ณ€๋ฐ˜ํ™˜ํƒ€์ž…

  • JDK 1.5๋ถ€ํ„ฐ ์ถ”๊ฐ€
  • ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•  ๋•Œ ์กฐ์ƒ ๋ฉ”์„œ๋“œ์˜ ๋ฐ˜ํ™˜ํƒ€์ž…์„ ์ž์† ํด๋ž˜์Šค์˜ ํƒ€์ž…์œผ๋กœ ๋ณ€๊ฒฝ์„ ํ—ˆ์šฉ
  • ๋ฒˆ๊ฑฐ๋กœ์šด ํ˜•๋ณ€ํ™˜์„ ์ค„์ž„

์–•์€ ๋ณต์‚ฌ์™€ ๊นŠ์€ ๋ณต์‚ฌ

  • clone()์€ ๋‹จ์ˆœํžˆ ๊ฐ์ฒด์— ์ €์žฅ๋œ ๊ฐ’์„ ๊ทธ๋Œ€๋กœ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ด์ง€ ๊ฐ์ฒด๊ฐ€ ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊นŒ์ง€ ๋ณต์‚ฌ X
    • ์ด๋Ÿฌํ•œ ๋ณต์ œ๋ฅผ ์–•์€ ๋ณต์‚ฌ๋ผ๊ณ  ๋ถ€๋ฆ„
    • ์–•์€ ๋ณต์‚ฌ๋Š” ์›๋ณธ์„ ๋ณ€๊ฒฝํ•˜๋ฉด ๋ณต์‚ฌ๋ณธ๋„ ์˜ํ–ฅ์„ ๋ฐ›์Œ
  • ์›๋ณธ์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๊นŒ์ง€ ๋ณต์ œํ•˜๋Š” ๊ฒƒ์ด ๊นŠ์€ ๋ณต์‚ฌ
    • ์›๋ณธ์˜ ๋ณ€๊ฒฝ์ด ๋ณต์‚ฌ๋ณธ์— ์˜ํ–ฅ์„ ๋ฏธ์น˜์ง€ ์•Š์Œ

getClass()

  • Class ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ
  • Class ๊ฐ์ฒด๋Š” ํด๋ž˜์Šค์˜ ๋ชจ๋“  ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๊ณ  ํด๋ž˜์Šค ๋‹น 1๊ฐœ๊ฐ€ ์กด์žฌ
  • ํด๋ž˜์Šค ๋กœ๋”๊ฐ€ ์‹คํ–‰ ์‹œ ํ•„์š”ํ•œ ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋“œํ•˜๋Š” ์—ญํ• 
    • ๊ธฐ์กด์— ์ƒ์„ฑ๋œ ํด๋ž˜์Šค ๊ฐ์ฒด๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ ํ›„ ์žˆ์œผ๋ฉด ๊ฐ์ฒด์˜ ์ฐธ์กฐ, ์—†์œผ๋ฉด ํด๋ž˜์Šค ํŒจ์Šค์— ์ง€์ •๋œ ๊ฒฝ๋กœ๋ฅผ ๋”ฐ๋ผ์„œ ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฐพ์Œ
  • ํด๋ž˜์Šค ํŒŒ์ผ์„ ์ฝ์–ด์„œ ์‚ฌ์šฉํ•˜๊ธฐ ํŽธํ•œ ํ˜•ํƒœ๋กœ ์ €์žฅํ•ด ๋†“์€ ๊ฒƒ์ด ํด๋ž˜์Šค ๊ฐ์ฒด

Class ๊ฐ์ฒด๋ฅผ ์–ป๋Š” ๋ฐฉ๋ฒ•

  • new ์ƒ์„ฑ์ž.getClass();
  • ํด๋ž˜์Šค๋ช….class;
  • Class.forName("ํด๋ž˜์Šค๋ช…");
    • forName()์€ ํŠน์ • ํด๋ž˜์Šค ํŒŒ์ผ์„ ์˜ฌ๋ฆด ๋•Œ ์ฃผ๋กœ ์‚ฌ์šฉ (ex. ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋“œ๋ผ์ด๋ฒ„)
  • Class ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•˜๋ฉด ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉค๋ฒ„์˜ ์ด๋ฆ„, ๊ฐœ์ˆ˜ ๋“ฑ ํด๋ž˜์Šค์— ๋Œ€ํ•œ ๋ชจ๋“  ์ •๋ณด๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
    • ๋ณด๋‹ค ๋™์ ์ธ ์ฝ”๋“œ ์ƒ์„ฑ ๊ฐ€๋Šฅ

1.2 String ํด๋ž˜์Šค

์ž๋ฐ”์—์„œ ์ œ๊ณตํ•˜๋Š” ๋ฌธ์ž์—ด์„ ์œ„ํ•œ ํด๋ž˜์Šค

๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅํ•œ ํด๋ž˜์Šค

  • ๋ฐฐ์—ด ์ฐธ์กฐ๋ณ€์ˆ˜ (char[]) value๋ฅผ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ์ •์˜
  • ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ์ฝ์–ด์˜ฌ ์ˆœ ์žˆ์ง€๋งŒ ๋ณ€๊ฒฝ ๋ถˆ๊ฐ€๋Šฅ
  • '+' ์—ฐ์‚ฐ์ž๋Š” ๋ฌธ์ž์—ด์ด ๋ฐ”๋€Œ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด์ด ๋‹ด๊ธด String ์ธ์Šคํ„ด์Šค๊ฐ€ ์ƒ์„ฑ
  • ๋ฌธ์ž์—ด ๊ฐ„์˜ ๋ณ€๊ฒฝ์ด ๋งŽ์ด ํ•„์š”ํ•  ๊ฒฝ์šฐ์—๋Š” StringBuffer ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•  ๊ฒƒ

๋ฌธ์ž์—ด์˜ ๋น„๊ต

  • ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ๋ฒ•, String ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
  • ๋ฆฌํ„ฐ๋Ÿด์€ ์ด๋ฏธ ์กด์žฌํ•˜๋Š” ๊ฒƒ์„ ์žฌ์‚ฌ์šฉ
  • String ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž๋Š” new ์—ฐ์‚ฐ์ž์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น์ด ์ด๋ฃจ์–ด์ง€๊ณ  ํ•ญ์ƒ ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ

๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด

  • ์ž๋ฐ” ์†Œ์ŠคํŒŒ์ผ์˜ ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์€ ์ปดํŒŒ์ผ ์‹œ ํด๋ž˜์Šค ํŒŒ์ผ์— ์ €์žฅ
  • ๊ทธ๋Ÿฌ๋ฏ€๋กœ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ณต์œ 
  • ํด๋ž˜์Šค ํŒŒ์ผ์ด ํด๋ž˜์Šค ๋กœ๋”์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ผ๊ฐˆ ๋•Œ ๋ฆฌํ„ฐ๋Ÿด์˜ ๋ชฉ๋ก์— ์žˆ๋Š” ๋ฆฌํ„ฐ๋Ÿด๋“ค์ด JVM ๋‚ด์— ์žˆ๋Š” ์ƒ์ˆ˜ ์ €์žฅ์†Œ(constant pool)์— ์ €์žฅ๋จ

๋นˆ ๋ฌธ์ž์—ด

  • ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด ์กด์žฌ ๊ฐ€๋Šฅ
    • C์–ธ์–ด์—์„  ๋ถˆ๊ฐ€๋Šฅ
  • String s = "";๋Š” ๋‚ด๋ถ€์— ๊ธธ์ด๊ฐ€ 0์ธ char ๋ฐฐ์—ด์„ ์ €์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ
  • char c ='';๋ผ๋Š” ํ‘œํ˜„์€ ๋ถˆ๊ฐ€๋Šฅ
    • charํ˜• ๋ณ€์ˆ˜์—๋Š” ๋ฐ˜๋“œ์‹œ ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ ์ง€์ •ํ•ด์•ผ ํ•จ
  • Stringํ˜•์˜ ๊ธฐ๋ณธ๊ฐ’์€ null์ด ์•„๋‹Œ ๋นˆ ๋ฌธ์ž์—ด
  • charํ˜•์˜ ๊ธฐ๋ณธ๊ฐ’์€ ๊ณต๋ฐฑ์œผ๋กœ ์ดˆ๊ธฐํ™”

String ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ

  • String(String s) : ๋ฌธ์ž์—ด s๋ฅผ ๊ฐ–๋Š” String ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • String(char[] value) : ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด value๋ฅผ ๊ฐ–๋Š” String ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • String(StringBuffer buf) : StringBuffer ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ–๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๋‚ด์šฉ์˜ String ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ
  • char charAt(int index) : ์ง€์ •๋œ ์œ„์น˜์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ๋ฆฌํ„ด
  • int compareTo(String str) : ๋ฌธ์ž์—ด๊ณผ ์‚ฌ์ „ ์ˆœ์„œ๋กœ ๋น„๊ต
    • ๊ฐ™์œผ๋ฉด 0, ์‚ฌ์ „ ์ˆœ ์ด์ „์€ ์Œ์ˆ˜, ์ดํ›„๋Š” ์–‘์ˆ˜
  • String concat(String str) : ๋ฌธ์ž์—ด ๋’ค์— ๋ง๋ถ™์ž„
  • boolean contains(CharSequence s) : ์ง€์ •๋œ ๋ฌธ์ž์—ด์„ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š”์ง€ ๊ฒ€์‚ฌ
  • boolean endsWith(String suffix) : ์ง€์ •๋œ ๋ฌธ์ž์—ด๋กœ ๋๋‚˜๋Š”์ง€ ๊ฒ€์‚ฌ
  • boolean equals(Object obj) : ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์„ ๋น„๊ต ํ›„ ๊ฒฐ๊ณผ ๋ฆฌํ„ด
  • boolean equalsIgnoreCase(String str) : ๋ฌธ์ž์—ด์„ ๋Œ€์†Œ๋ฌธ ๊ตฌ๋ณ„ ์—†์ด ๋‚ด์šฉ ๋น„๊ต
  • int indexOf(int ch) : ์ฃผ์–ด์ง„ ๋ฌธ์ž๊ฐ€ ๋ฌธ์ž์—ด์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์œ„์น˜ ๋ฐ˜ํ™˜
    • ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
    • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
  • int indexOf(int ch, int pos) : ์ฃผ์–ด์ง„ ๋ฌธ์ž๊ฐ€ ์ง€์ •๋œ ์œ„์น˜๋ถ€ํ„ฐ ํ™•์ธํ•˜์—ฌ ๋ฌธ์ž์—ด์— ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธํ•˜์—ฌ ์œ„์น˜ ๋ฐ˜ํ™˜
    • ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
    • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
  • int indexOf(String str) : ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์ด ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ ํ›„ ๊ทธ ์œ„์น˜๋ฅผ ๋ฐ˜ํ™˜
    • ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
    • ์ธ๋ฑ์Šค๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
  • String intern() : ๋ฌธ์ž์—ด์„ ์ƒ์ˆ˜ํ’€์— ๋“ฑ๋ก
    • ์ด๋ฏธ ๊ฐ™์€ ๋‚ด์šฉ์ด ์ƒ์ˆ˜ํ’€์— ๋“ฑ๋ก๋˜์–ด ์žˆ์„ ์‹œ ๊ทธ ๋ฌธ์ž์—ด์˜ ์ฃผ์†Ÿ๊ฐ’์„ ๋ฐ˜ํ™˜
  • int lastIndexOf(int ch) : ์ง€์ •๋œ ๋ฌธ์ž ๋˜๋Š” ๋ฌธ์ž ์ฝ”๋“œ๋ฅผ ๋ฌธ์ž์—ด์˜ ์˜ค๋ฅธ์ชฝ ๋์—์„œ ์ฐพ์•„์„œ ์œ„์น˜ ๋ฐ˜ํ™˜
    • ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
  • int lastIndexOf(String str) : ์ง€์ •๋œ ๋ฌธ์ž์—ด์„ ์ธ์Šคํ„ด์Šค ๋ฌธ์ž์—ด์˜ ์˜ค๋ฅธ์ชฝ ๋์—์„œ ์ฐพ์•„์„œ ์œ„์น˜ ๋ฐ˜ํ™˜
    • ์—†์œผ๋ฉด -1 ๋ฐ˜ํ™˜
  • int length() : ๋ฌธ์ž์—ด์˜ ๊ธธ์ด return
  • String replace(char old, char nw), String replace(CharSequence old, CharSequence nw) : ๋ฌธ์ž์—ด ์ค‘์˜ ์ฒซ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ์™€ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž์—ด์„ ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ๋ฐ”๊พผ ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜
  • String replaceAll(String regex, String replacement) : ๋ฌธ์ž์—ด ์ค‘์—์„œ ์ง€์ •๋œ ๋ฌธ์ž์—ด๊ณผ ์ผ์น˜ํ•˜๋Š” ๊ฒƒ์„ ์ƒˆ๋กœ์šด ๋ฌธ์ž์—ด๋กœ ๋ณ€๊ฒฝ
  • String[] split(String regex) : ๋ฌธ์ž์—ด์„ ์ง€์ •๋œ ๋ถ„๋ฆฌ์ž๋กœ ๋‚˜๋ˆ„์–ด ๋ฌธ์ž์—ด ๋ฐฐ์—ด ๋ฐ˜ํ™˜
  • String[] split(String regex, int limit) : ๋ฌธ์ž์—ด์„ ์ง€์ •๋œ ๋ถ„๋ฆฌ์ž๋กœ ๋‚˜๋ˆ„์–ด ๋ฌธ์ž์—ด ๋ฐฐ์—ด์„ ์ง€์ •๋œ ์ˆ˜๋กœ ์ž˜๋ผ์„œ ๋ฐ˜ํ™˜
  • boolean startWith(String prefix) : ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ์‹œ์ž‘ํ•˜๋Š”์ง€ ๊ฒ€์‚ฌ
  • String substring(int begin), String substring(int begin, int end) : ์ฃผ์–ด์ง„ ์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๋ ๋ฒ”์œ„์— ํฌํ•จ๋œ ๋ฌธ์ž์—ด return
    • ์‹œ์ž‘ ์œ„์น˜๋Š” ๋ฌธ์ž์˜ ๋ฒ”์œ„์— ํฌํ•จ, ๋ ์œ„์น˜๋Š” ํฌํ•จ X
  • String toLowerCase() : ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์†Œ๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
  • String toString() : String ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์„ ๋ฐ˜ํ™˜
  • String toUpperCase() : String ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ๋Œ€๋ฌธ์ž๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
  • String trim() : ๋ฌธ์ž์—ด์˜ ์™ผ์ชฝ ๋, ์˜ค๋ฅธ์ชฝ ๋์˜ ๊ณต๋ฐฑ์„ ์—†์•ค ๊ฒฐ๊ณผ return
    • ๋ฌธ์ž์—ด ์ค‘๊ฐ„์— ์žˆ๋Š” ๊ณต๋ฐฑ์€ ์ œ๊ฑฐ X
  • static String valueOf(๋งค๊ฐœ๋ณ€์ˆ˜) : ์ง€์ •๋œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜
    • ์ฐธ์กฐ๋ณ€์ˆ˜์˜ ๊ฒฝ์šฐ์—” toString()์„ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ ๋ฐ˜ํ™˜
    • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ boolean, char, int, long, float, double, Object ๊ฐ€๋Šฅ

join()๊ณผ StringJoiner

  • join()์€ ์—ฌ๋Ÿฌ ๋ฌธ์ž์—ด ์‚ฌ์ด์— ๊ตฌ๋ถ„์ž๋ฅผ ๋„ฃ์–ด์„œ ๊ฒฐํ•ฉ
  • split()๊ณผ ๋ฐ˜๋Œ€์˜ ์ž‘์—…
  • StringJoiner ํด๋ž˜์Šค๋กœ ๋ฌธ์ž์—ด ๊ฒฐํ•ฉ๋„ ๊ฐ€๋Šฅ
    • ex) new StringJoiner(",", "[", "]");
    • ์ƒ์„ฑ์ž ์ดํ›„ ๋ฌธ์ž์—ด์„ add

์œ ๋‹ˆ์ฝ”๋“œ์˜ ๋ณด์ถฉ ๋ฌธ์ž

  • ์œ ๋‹ˆ์ฝ”๋“œ๋Š” ์›๋ž˜ 2byte ์˜€์ง€๋งŒ ๋ณด์ถฉ ๋ฌธ์ž๋“ค์€ 20bit๋กœ ํ™•์ •ํ•˜๊ฒŒ ๋˜์—ˆ์Œ
    • ํ•˜๋‚˜์˜ ๋ฌธ์ž๋ฅผ char ํƒ€์ž…์œผ๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์—†๊ณ  int๋กœ ๋‹ค๋ฃฐ ์ˆ˜๋ฐ–์— ์—†๊ฒŒ๋จ
  • String์˜ ๋ฉ”์„œ๋“œ ์ค‘ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ int์ธ ๋ฉ”์„œ๋“œ๋“ค์€ ๋ณด์ถฉ ๋ฌธ์ž๋ฅผ ์ง€์›

๋ฌธ์ž ์ธ์ฝ”๋”ฉ ๋ณ€ํ™˜

  • getBytes(String charsertName)๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฌธ์ž์—ด์˜ ๋ฌธ์ž ์ธ์ฝ”๋”ฉ์„ ๋‹ค๋ฅธ ์ธ์ฝ”๋”ฉ์œผ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ

String.format()

  • format์€ ํ˜•์‹ํ™”๋œ ๋ฌธ์ž์—ด์„ ๋งŒ๋“ค์–ด๋‚ด๋Š” ๊ฐ„๋‹จํ•œ ๋ฐฉ๋ฒ•
  • printf()์™€ ์‚ฌ์šฉ๋ฒ•์ด ์™„์ „ํžˆ ๋™์ผ

๊ธฐ๋ณธํ˜• ๊ฐ’์„ String์œผ๋กœ ๋ณ€ํ™˜

  • ์ˆซ์ž์˜ ๋นˆ ๋ฌธ์ž์—ด ""์„ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•
  • String.valueOf()๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•
    • ์„ฑ๋Šฅ์€ ๋นˆ ๋ฌธ์ž์—ด์„ ๋”ํ•˜๋Š” ๋ฐฉ๋ฒ•๋ณด๋‹ค ์ข‹์Œ

String์„ ๊ธฐ๋ณธํ˜• ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜

  • valueOf()๋ฅผ ์‚ฌ์šฉ
  • parseInt()์™€ ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉ
    • parseInt()์—์„œ ๋ฐ˜ํ™˜ ํƒ€์ž…์€ Integer์ด์ง€๋งŒ ์˜คํ† ๋ฐ•์‹ฑ์— ์˜ํ•ด int๋กœ ์ž๋™ ๋ณ€ํ™˜
  • parseInt()๋‚˜ parseFloat() ๊ฐ™์€ ๋ฉ”์„œ๋“œ๋Š” ๋ฌธ์ž์—ด์— ๊ณต๋ฐฑ ๋˜๋Š” ๋ฌธ์ž๊ฐ€ ํฌํ•จ๋˜์–ด ์žˆ๋Š” ๊ฒฝ์šฐ ๋ณ€ํ™˜ ์‹œ NumberFormatException ๋ฐœ์ƒ
    • trim()์„ ์‚ฌ์šฉํ•ด ์ฃผ๋ฉด ๊ณต๋ฐฑ ์ œ๊ฑฐ ๊ฐ€๋Šฅ
  • floatํ˜• ๊ฐ’์„ ์˜๋ฏธํ•˜๋Š” f์™€ ๊ฐ™์€ ์ž๋ฃŒํ˜• ์ ‘๋ฏธ์‚ฌ๋Š” ์•Œ๋งž์€ ๋ณ€ํ™˜ ์‹œ ํ—ˆ์šฉ

1.3 StringBuffer ํด๋ž˜์Šค์™€ StringBuilder ํด๋ž˜์Šค

  • StringBuffer ํด๋ž˜์Šค๋Š” ์ง€์ •๋œ ๋ฌธ์ž์—ด์„ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ
    • ๋‚ด๋ถ€์— ํŽธ์ง‘์„ ์œ„ํ•œ buffer๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์Œ
    • ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ ์‹œ ํฌ๊ธฐ ์ง€์ • ๊ฐ€๋Šฅ
  • ํŽธ์ง‘ํ•  ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๊ณ ๋ คํ•˜์—ฌ ๋ฒ„ํผ์˜ ๊ธธ์ด๋ฅผ ์ถฉ๋ถ„ํžˆ ์žก์•„์ค„ ๊ฒƒ

StringBuffer์˜ ์ƒ์„ฑ์ž

  • ์ƒ์„ฑ ์‹œ ์ ์ ˆํ•œ ๊ธธ์ด์˜ charํ˜• ๋ฐฐ์—ด ์ƒ์„ฑ (buffer๋กœ ์ด์šฉ)
  • ์ƒ์„ฑ์ž StringBuffer(int length)๋ฅผ ์‚ฌ์šฉํ•ด์„œ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ์ถฉ๋ถ„ํžˆ ์—ฌ์œ  ์žˆ๋Š” ํฌ๊ธฐ๋กœ ์ง€์ •ํ•  ๊ฒƒ
  • ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ์ง€์ •ํ•˜์ง€ ์•Š์„ ์‹œ 16๊ฐœ์˜ ๋ฌธ์ž๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํผ ์ƒ์„ฑ
  • ๋ฐฐ์—ด์˜ ๊ธธ์ด๊ฐ€ ๋„˜์–ด๊ฐ€๋ฉด ๋‚ด๋ถ€์—์„œ ์ด์ „์˜ ๋ฐฐ์—ด์˜ ๊ฐ’์„ ๋ณต์‚ฌํ•œ ์ƒˆ๋กœ์šด ๋ฐฐ์—ด ์ƒ์„ฑ ํ›„ ๊ต์ฒด

StringBuffer์˜ ๋ณ€๊ฒฝ

  • appned()๋กœ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
    • ๋ฐ˜ํ™˜ํƒ€์ž…์ด StringBuffer -> ์ž์‹ ์˜ ์ฃผ์†Œ๋ฅผ ๋ฐ˜ํ™˜
    • append๋กœ ๋ฐ›์€ ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” ๋ชจ๋‘ ๊ฐ™์€ StringBuffer ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฐ€๋ฆฌํ‚ด

StringBuffer์˜ ๋น„๊ต

  • StringBuffer๋Š” equals ๋ฉ”์„œ๋“œ๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•˜์ง€ ์•Š์Œ
  • ๋“ฑ๊ฐ€๋น„๊ต์—ฐ์‚ฐ์ž(==)์™€ ๊ฐ™์Œ
  • toString()์€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋˜์–ด์žˆ์Œ -> ๋‹ด๊ณ  ์žˆ๋Š” ๋ฌธ์ž์—ด์„ String์œผ๋กœ ๋ฐ˜ํ™˜
    • toString() ํ›„ eqauls๋กœ ๋น„๊ต ๊ฐ€๋Šฅ

StringBuffer ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ

  • StringBuffer() : 16๋ฌธ์ž์˜ ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง„ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • StringBuffer(int length) : ์ง€์ •๋œ ๊ธธ์ด์˜ ๋ฌธ์ž๋ฅผ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฒ„ํผ๋ฅผ ๊ฐ€์ง„ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • StringBuffer(String str) : ์ง€์ •๋œ ๋ฌธ์ž์—ด ๊ฐ’์„ ๊ฐ–๋Š” ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
    • ์ง€์ •๋œ ๋ฌธ์ž์—ด๋ณด๋‹ค 16์ž๋ฆฌ ๋” ํฐ ๋ฒ„ํผ๋กœ ์ƒ์„ฑ
  • StringBuffer append(๋งค๊ฐœ๋ณ€์ˆ˜) : ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ์ž…๋ ฅ๋œ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค์˜ ๋ฌธ์ž์—ด ๋’ค์— ๋ง๋ถ™์ž„
    • ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ boolean, char, char[], double, float, int, long, Object, String ๊ฐ€๋Šฅ
  • int capacity() : ์ธ์Šคํ„ด์Šค์˜ ๋ฒ„ํผ ํฌ๊ธฐ๋ฅผ ๋ฐ˜ํ™˜
  • char charAt(int idndex) : ์ง€์ •๋œ ์ธ๋ฑ์Šค์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ๋ฐ˜ํ™˜
  • StringBuffer delete(int start, int end) : ์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๋ ์œ„์น˜ ์‚ฌ์ด์— ์žˆ๋Š” ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐ
    • ๋ ์œ„์น˜์˜ ๋ฌธ์ž๋Š” ์ œ์™ธ
  • StringBuffer deleteCharAt(int index) : ์ง€์ •๋œ ์œ„์น˜์˜ ๋ฌธ์ž๋ฅผ ์ œ๊ฑฐ
  • StringBuffer insert(int pos, ๋งค๊ฐœ๋ณ€์ˆ˜) : ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฐ›์€ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ ํ›„ ์ง€์ •๋œ ์œ„์น˜์— ์ถ”๊ฐ€
    • pos๋Š” 0๋ถ€ํ„ฐ ์‹œ์ž‘
    • ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋Š” boolean, char, char[], double, float, int, long, Object, String์ด ๋“ค์–ด์˜ฌ ์ˆ˜ ์žˆ์Œ
  • int length() : ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์˜ ๊ธธ์ด ๋ฐ˜ํ™˜
  • StringBuffer replace(int start, int end, String str) : ์ง€์ •๋œ ๋ฒ”์œ„์˜ ๋ฌธ์ž๋“ค์„ ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊ฟˆ
    • end ์œ„์น˜์˜ ๋ฌธ์ž๋Š” ๋ฒ”์œ„์— ํฌํ•จ X
  • StringBuffer reverse() : ์ธ์Šคํ„ด์Šค์— ์ €์žฅ๋˜์–ด ์žˆ๋Š” ๋ฌธ์ž์—ด์˜ ์ˆœ์„œ๋ฅผ ๊ฑฐ๊พธ๋กœ ๋‚˜์—ด
  • void setCharAt() : ์ง€์ •๋œ ์œ„์น˜์˜ ๋ฌธ์ž๋ฅผ ์ฃผ์–ด์ง„ ๋ฌธ์ž๋กœ ๊ต์ฒด
  • void setLength(int newLength) : ์ง€์ •๋œ ๊ธธ์ด๋กœ ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋ฅผ ๋ณ€๊ฒฝ, ๊ธธ์ด๋ฅผ ๋Š˜๋ฆฌ๋Š” ๊ฒฝ์šฐ ๋นˆ ๊ณต๊ฐ„์€ ๋„๋ฌธ์ž('\u0000')
  • String toString() : StringBuffer ์ธ์Šคํ„ด์Šค์˜ ๋ฌธ์ž์—ด์„ String์œผ๋กœ ๋ฐ˜ํ™˜
  • String subString(int String), String subString(int start, int end) : ์ง€์ •๋œ ๋ฒ”์œ„ ๋‚ด์˜ ๋ฌธ์ž์—ด์„ String์œผ๋กœ ๋ฝ‘์•„์„œ ๋ฐ˜ํ™˜
    • ์‹œ์ž‘ ์œ„์น˜๋งŒ ์ง€์ • ์‹œ ์‹œ์ž‘ ์œ„์น˜๋ถ€ํ„ฐ ๋ฌธ์ž์—ด ๋๊นŒ์ง€

StringBuilder๋ž€?

  • StringBuffer๋Š” ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ์— ์•ˆ์ „ํ•˜๋„๋ก ๋™๊ธฐํ™”
    • ๋ฉ€ํ‹ฐ์“ฐ๋ ˆ๋“œ๋กœ ์ž‘์„ฑ๋œ ํ”„๋กœ๊ทธ๋žจ์ด ์•„๋‹ˆ๋ผ๋ฉด ๋™๊ธฐํ™”๋Š” ์„ฑ๋Šฅ์„ ๋–จ์–ด๋œจ๋ฆผ
  • StringBuffer์—์„œ ์“ฐ๋ ˆ๋“œ์˜ ๋™๊ธฐํ™”๋งŒ ๋บ€ ๊ฒƒ์ด StringBuilder

Math ํด๋ž˜์Šค

  • ๊ธฐ๋ณธ์ ์ธ ์ˆ˜ํ•™๊ณ„์‚ฐ์— ์œ ์šฉํ•œ ๋ฉ”์„œ๋“œ๋กœ ๊ตฌ์„ฑ
  • Math ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ๋Š” static

์˜ฌ๋ฆผ, ๋ฒ„๋ฆผ, ๋ฐ˜์˜ฌ๋ฆผ

  • ๋ฐ˜์˜ฌ๋ฆผํ•œ ๊ฐ’์„ ์–ป๊ธฐ ์œ„ํ•ด์„  round()๋ฅผ ์‚ฌ์šฉ
    • 10, 100๋“ฑ์„ ๊ณฑํ•œ ๋’ค ๊ฒฐ๊ณผ์— round() ์‚ฌ์šฉ ํ›„ ๋‹ค์‹œ 10.0, 100.0์œผ๋กœ ๋‚˜๋ˆ„๊ธฐ
  • rint()๋Š” ๋‘ ์ •์ˆ˜์˜ ์ •๊ฐ€์šด๋ฐ ์žˆ๋Š” ๊ฐ€์žฅ ๊ฐ€๊นŒ์šด ์ง์ˆ˜ ์ •์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
    • ์Œ์ˆ˜์—์„œ ์ฃผ์˜
  • ceil()์€ ์˜ฌ๋ฆผ, floor()๋Š” ๋ฒ„๋ฆผ

์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ

  • ์ •์ˆ˜ํ˜• ๊ฐ„์˜ ์—ฐ์‚ฐ์—์„œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๋ฅผ ๊ฐ์ง€ํ•˜๊ธฐ ์œ„ํ•œ ๊ฒƒ
  • int addExact(int x, int y), int subtractExact(int x, int y) ๋“ฑ๋“ฑ..
  • ์—ฐ์‚ฐ์ž๋Š” ๋‹จ์ง€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐ˜ํ™˜ํ•˜์ง€๋งŒ ๋ฉ”์„œ๋“œ๋“ค์€ ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ
    • ArithmeticException

์‚ผ๊ฐํ•จ์ˆ˜์™€ ์ง€์ˆ˜, ๋กœ๊ทธ

  • sqrt, pow, sin, cos, log ๋“ฑ๋“ฑ ..
  • ์‚ผ๊ฐํ•จ์ˆ˜๋Š” ๋ผ๋””์•ˆ์ด ๋งค๊ฐœ๋ณ€์ˆ˜ (toRadians๋ฅผ ์‚ฌ์šฉํ•ด double๋กœ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Œ)

StrictMath ํด๋ž˜์Šค

  • Math ํด๋ž˜์Šค๋Š” JVM์ด ์„ค์น˜๋œ OS์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•ด์„œ ์‚ฌ์šฉ
    • OS์— ์˜์กด์ ์ธ ๊ณ„์‚ฐ
  • ์„ฑ๋Šฅ์„ ๋‹ค์†Œ ํฌ๊ธฐํ•˜๊ณ  ์–ด๋–ค OS์—์„œ๋“ ์ง€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ธฐ ์œ„ํ•œ ๊ฒƒ์ด StrictMath ํด๋ž˜์Šค

1.5 ๋ž˜ํผ(wrapper) ํด๋ž˜์Šค

  • ์ž๋ฐ”๋Š” 8๊ฐœ์˜ ๊ธฐ๋ณธํ˜•์ด ์žˆ๊ณ  ๊ธฐ๋ณธํ˜•์„ ๊ฐ์ฒด๋กœ ๋‹ค๋ค„์•ผ ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์ด ๋ž˜ํผ(wrapper) ํด๋ž˜์Šค
  • ์ƒ์„ฑ์ž์˜ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๋ฌธ์ž์—ด์„ ์ œ๊ณตํ•  ๋•Œ ๊ฐ ์ž๋ฃŒํ˜•์— ์•Œ๋งž์€ ๋ฌธ์ž์—ด์„ ์‚ฌ์šฉํ•  ๊ฒƒ
    • NumberFormatException ๋“ฑ์˜ ์˜ˆ์™ธ์ฃผ์˜
  • wrapper ํด๋ž˜์Šค๋“ค์€ ๋ชจ๋‘ equals()๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋˜์–ด ์žˆ์Œ

Number ํด๋ž˜์Šค

  • ๊ธฐ๋ณธํ˜• ์ค‘์—์„œ ์ˆซ์ž์™€ ๊ด€๋ จ๋œ ๋ž˜ํผ ํด๋ž˜์Šค๋“ค์€ ๋ชจ๋‘ Number ํด๋ž˜์Šค๊ฐ€ ์กฐ์ƒ
  • ๊ทธ ์™ธ์—” BigInteger, BigDecimal -> ํฐ ๋ฒ”์œ„์˜ ์ •์ˆ˜ ๋ฐ ๋ถ€๋™ ์†Œ์ˆ˜์ ์ˆ˜๋ฅผ ์ฒ˜๋ฆฌ

๋ฌธ์ž์—ด์„ ์ˆซ์ž๋กœ ๋ณ€ํ™˜ํ•˜๊ธฐ

  • ํƒ€์ž….parseํƒ€์ž…(String s)
    • ๋ฐ˜ํ™˜๊ฐ’์ด ๊ธฐ๋ณธํ˜•
  • ํƒ€์ž….valueOf()
    • ๋ฐ˜ํ™˜๊ฐ’์ด ๋ž˜ํผ ํด๋ž˜์Šค ํƒ€์ž…, parse ํƒ€์ž… ๋ณด๋‹จ ์„ฑ๋Šฅ์ด ์กฐ๊ธˆ ๋Š๋ฆฌ๋‹ค.
  • JDK 1.5๋ถ€ํ„ฐ ๋„์ž…๋œ ์˜คํ† ๋ฐ•์‹ฑ ๊ธฐ๋Šฅ์œผ๋กœ ์ธํ•ด ๋ฐ˜ํ™˜๊ฐ’์ด ๊ธฐ๋ณธํ˜•์ผ ๋•Œ์™€ ๋ž˜ํผ ํด๋ž˜์Šค์ผ ๋•Œ์˜ ์„ฑ๋Šฅ ์ฐจ์ด๊ฐ€ ์—†์–ด์ง
  • parseInt, Integer.valueOf์— ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ง„๋ฒ•์˜ ์ˆซ์ž๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์Œ

์˜คํ† ๋ฐ•์‹ฑ & ์–ธ๋ฐ•์‹ฑ

  • ๊ธฐ๋ณธํ˜•๊ณผ ์ฐธ์กฐํ˜• ๊ฐ„์˜ ์—ฐ์‚ฐ์ด ๊ฐ€๋Šฅ
    • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๋ณ€ํ™˜ํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ๋„ฃ์–ด์คŒ
  • ๋‚ด๋ถ€์ ์œผ๋กœ ๊ฐ์ฒด ๋ฐฐ์—ด์„ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํด๋ž˜์Šค๋“ค๋„ ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ์ž๋™์œผ๋กœ ํ˜•๋ณ€ํ™˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€
  • ๋ž˜ํผ ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋กœ ๋ณ€ํ™˜ํ•ด์ฃผ ๋Š” ๊ฒƒ์ด ์˜คํ† ๋ฐ•์‹ฑ
  • ๋ฐ˜๋Œ€๋กœ ๋ณ€ํ™˜ํ•ด ์ฃผ๋Š” ๊ฒƒ์ด ์–ธ๋ฐ•์‹ฑ

2 ์œ ์šฉํ•œ ํด๋ž˜์Šค

2.1 java.util.Objects ํด๋ž˜์Šค

  • Object ํด๋ž˜์Šค์˜ ๋ณด์กฐ ํด๋ž˜์Šค
  • ๋ชจ๋“  ๋ฉ”์„œ๋“œ๊ฐ€ static
  • isNull()์€ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ null ์ธ์ง€ ์œ ๋ฌด๋ฅผ return
  • requreNonNull()์€ ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ null์ด ์•„๋‹ˆ์–ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉ
    • ํ•ด๋‹น ๊ฐ์ฒด๊ฐ€ null์ผ ์‹œ NullPointException ๋ฐœ์ƒ
    • ๋‘ ๋ฒˆ์งธ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์˜ˆ์™ธ ๋ฉ”์‹œ์ง€ ์ง€์ • ๊ฐ€๋Šฅ
  • compare()์€ ๋‘ ๋น„๊ต ๋Œ€์ƒ์ด ๊ฐ™์œผ๋ฉด 0, ํฌ๋ฉด ์–‘์ˆ˜, ์ž‘์œผ๋ฉด ์Œ์ˆ˜ ๋ฐ˜ํ™˜
    • ๊ธฐ์ค€์˜ ์—ญํ• ์€ Comparator
  • Objects์˜ equals()๋Š” null ๊ฒ€์‚ฌ๋ฅผ ํ•˜์ง€ ์•Š์•„๋„ OK
  • deepEquals()๋Š” ๊ฐ์ฒด๋ฅผ ์žฌ๊ท€์ ์œผ๋กœ ๋น„๊ตํ•˜๋ฏ€๋กœ ๋‹ค์ฐจ์›์˜ ๋ฐฐ์—ด ๋น„๊ต๋„ ๊ฐ€๋Šฅ
  • hashCode()๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ null ๊ฒ€์‚ฌ๋ฅผ ํ•œ ํ›„ Object ํด๋ž˜์Šค์˜ hashCode() ํ˜ธ์ถœ
    • null ์ผ ๋•Œ๋Š” 0 ๋ฐ˜ํ™˜

2.2 java.util.Random ํด๋ž˜์Šค

  • Math.random()์€ ๋‚ด๋ถ€์ ์œผ๋กœ Random ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ
    • Math.random()๊ณผ ๋‹ค๋ฅด๊ฒŒ Random์€ ์ข…์ž๊ฐ’(seed)๋ฅผ ์„ค์ • ๊ฐ€๋Šฅ

Random ํด๋ž˜์Šค์˜ ์ƒ์„ฑ์ž์™€ ๋ฉ”์„œ๋“œ

  • ์ƒ์„ฑ์ž Random()์€ ์ข…์ž๊ฐ’์„ System.currentTimeMillis()๋กœ ํ•จ
  • Random() : ํ˜„์žฌ ์‹œ๊ฐ„์„ ์ข…์ž๊ฐ’์œผ๋กœ ์ด์šฉํ•˜๋Š” Random ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ
  • Random(long seed) : ๋งค๊ฐœ๋ณ€์ˆ˜ seed๋ฅผ ์ข…์ž๊ฐ’์œผ๋กœ ํ•˜๋Š” Random ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ
  • nextBoolean(), nextBytes(Bytep[] bytes), nextDouble(), nextFloat() : next ๋’ค ํƒ€์ž…์˜ ๋‚œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜
  • void setSeed(long seed) : ์ข…์ž๊ฐ’์„ ์ฃผ์–ด์ง„ ๊ฐ’(seed)์œผ๋กœ ๋ณ€๊ฒฝ
  • double nextGaussian() : ํ‰๊ท ์€ 0.0์ด๊ณ  ํ‘œ์ค€ํŽธ์ฐจ๋Š” 1.0์ธ ๊ฐ€์šฐ์‹œ์•ˆ ๋ถ„ํฌ์— ๋”ฐ๋ฅธ doubleํ˜•์˜ ๋‚œ์ˆ˜๋ฅผ ๋ฐ˜ํ™˜

2.3 ์ •๊ทœ์‹(Regular Expression) - java.util.regex ํŒจํ‚ค์ง€

  • Perl์˜ ๊ฐ•๋ ฅํ•œ ๊ธฐ๋Šฅ์„ ์ง€์›
  • ์ •๊ทœ์‹ ์ •์˜์™€ ๋ฐ์ดํ„ฐ ๋น„๊ต ๊ณผ์ •
    1. Pattern ํด๋ž˜์Šค์˜ compile ํ˜ธ์ถœ ํ›„ pattern ์ธ์Šคํ„ด์Šค๋ฅผ ์–ป์Œ
    2. Pattern ํด๋ž˜์Šค์˜ Matcher ์ธ์Šคํ„ด์Šค๋ฅผ ํ˜ธ์ถœ
    3. Matcher ์ธ์Šคํ„ด์Šค์˜ matches() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ •๊ทœ์‹์— ๋ถ€ํ•ฉํ•˜๋Š”์ง€ ํ™•์ธ
  • ์ •๊ทœ์‹์˜ ์ผ๋ถ€๋ฅผ ๊ด„ํ˜ธ๋กœ ๋ฌถ์–ด์„œ ๊ทธ๋ฃจํ•‘ ๊ฐ€๋Šฅ
    • group(0)์€ ๋งค์นญ๋œ ๋ฌธ์ž์—ด ์ „์ฒด
  • Mather์˜ find()๋กœ ์ฐพ์€ ์ •๊ทœ์‹๊ณผ ์ผ์น˜ํ•˜๋Š” ๋ฌธ์ž๋ฅผ start(), end()๋กœ ์œ„์น˜๋ฅผ ์•Œ์•„๋‚ผ ์ˆ˜ ์žˆ๊ณ  appendReplacement()๋กœ ์›ํ•˜๋Š” ๋ฌธ์ž์—ด ์น˜ํ™˜ ๊ฐ€๋Šฅ

2.4 java.util.Scanner ํด๋ž˜์Šค

  • Scanner๋Š” ํ™”๋ฉด, ํŒŒ์ผ, ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ์ž…๋ ฅ ์†Œ์Šค๋กœ๋ถ€ํ„ฐ ๋ฌธ์ž ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์–ด์˜ด
  • ์ •๊ทœ์‹ ํ‘œํ˜„์„ ์ด์šฉํ•œ ๋ผ์ธ ๋‹จ์œ„์˜ ๊ฒ€์ƒ‰ ์ง€์›, ๊ตฌ๋ถ„์ž(delimiter)์—๋„ ์ •๊ทœ์‹ ํ‘œํ˜„์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ
  • JDK 1.5๋ถ€ํ„ฐ Scanner ์‚ฌ์šฉ, JDK 1.6 ์ดํ›„์—” ์ž…์ถœ๋ ฅ๋งŒ ์ „๋ฌธ์ ์œผ๋กœ ๋‹ด๋‹นํ•˜๋Š” java.io.Console ์ถ”๊ฐ€(์ดํด๋ฆฝ์Šค์™€ ๊ฐ™์€ IDE์—์„œ ๋™์ž‘ X)
  • ์ž…๋ ฅ๋ฐ›์„ ๊ฐ’์— ๋”ฐ๋ผ nextLine(), nextInt(), nextLong() ๋“ฑ๋“ฑ ์กด์žฌ

2.5 java.util.StringTokernizer ํด๋ž˜์Šค

  • StringTokernizer๋Š” ๊ธด ๋ฌธ์ž์—ด์„ ์ง€์ •๋œ ๊ตฌ๋ถ„์ž(delimiter)๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ† ํฐ์ด๋ผ๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๋ฌธ์ž์—ด๋กœ ์ž˜๋ผ๋‚ด๋Š” ๋ฐ ์‚ฌ์šฉ
  • String์˜ split, Scanner์˜ useDelimiter๋กœ ๋ถ„๋ฆฌํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ์ด ๋‘ ๊ฐ€์ง€ ๋ฐฉ์‹์€ ์ •๊ทœ์‹์„ ์‚ฌ์šฉํ•ด์•ผ ํ•˜๋ฏ€๋กœ ์ •๊ทœ์‹์— ์ต์ˆ™ํ•ด์•ผ ํ•จ
    • ๊ทธ๋Ÿฌ๋‚˜ StringTokernizer๋Š” ๊ตฌ๋ถ„์ž๋กœ ๋‹จ ํ•˜๋‚˜์˜ ๋ฌธ์ž ๋ฐ–์— ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•จ (ex-"+-*/"๋ฅผ ๊ตฌ๋ถ„์ž ์ž๋ฆฌ์— ๋„ฃ์œผ๋ฉด ๊ฐ๊ฐ์˜ ๋ฌธ์ž๊ฐ€ ๊ตฌ๋ถ„์ž)
    • String์˜ split()์€ ๋นˆ ๋ฌธ์ž์—ด๋„ ํ† ํฐ์œผ๋กœ ์ธ์‹, StringTokernizer์€ ๋นˆ ๋ฌธ์ž์—ด์€ ํ† ํฐ์œผ๋กœ ์ธ์‹ X
    • String์˜ split()์€ ๊ฒฐ๊ณผ๋ฅผ ๋ฐฐ์—ด์— ๋‹ด๊ธฐ ๋•Œ๋ฌธ์— ํ† ํฐ์œผ๋กœ ๋ฐ”๋กœ๋ฐ”๋กœ ์ž˜๋ผ์„œ ๋ฐ˜ํ™˜ํ•˜๋Š” StringTokernizer๋ณด๋‹ค ๋Š๋ฆผ
  • StringTokernizer ์ƒ์„ฑ์ž์— ๋งค๊ฐœ ๋ณ€์ˆ˜๊ฐ€ ๋‘ ๊ฐœ ์ผ ๋• ๋ฌธ์ž์—ด๊ณผ ๊ตฌ๋ถ„์ž, ์„ธ ๊ฐœ ์ผ ๋• ๋งˆ์ง€๋ง‰ ๋งค๊ฐœ ๋ณ€์ˆ˜๋Š” ๊ตฌ๋ถ„์ž๋„ ํ† ํฐ์œผ๋กœ ํ•˜๋Š”์ง€์˜ ์—ฌ๋ถ€
    • ๋ฉ”์„œ๋“œ๋Š” countTokens(), hasMoreTokens(), nextToken() ์กด์žฌ

2.6 java.math.BigInteger ํด๋ž˜์Šค

  • long์œผ๋กœ ํ‘œํ˜„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์„ ๋‹ค๋ฃฐ ๋•Œ ์‚ฌ์šฉ
  • BigInteger๋Š” ๋‚ด๋ถ€์ ์œผ๋กœ int ๋ฐฐ์—ด์„ ์‚ฌ์šฉํ•ด์„œ ๊ฐ’์„ ๋‹ค๋ฃธ
    • ํฐ ๊ฐ’์„ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์ง€๋งŒ ์„ฑ๋Šฅ์€ long๋ณด๋‹ค ๋–จ์–ด์ง
    • final int signum์œผ๋กœ ๋ถ€ํ˜ธ, final int[] mag๋กœ ๊ฐ’
    • BigInteger๋Š” ๋ถˆ๋ณ€

BigInteger์˜ ์ƒ์„ฑ

  • ๋ฌธ์ž๋กœ ์ˆซ์ž์—ด์„ ํ‘œํ˜„ํ•ด์„œ ์ƒ์„ฑ
  • ๋‘ ๋ฒˆ์งธ ํŒŒ๋ผ๋ฏธํ„ฐ๋กœ ์ง„์ˆ˜๋ฅผ ์ฃผ๊ณ  ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅ
  • ์ˆซ์ž๋กœ ์ƒ์„ฑ๋„ ๊ฐ€๋Šฅ

๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ์˜ ๋ณ€ํ™˜

  • toSTring(), toString(int radix), byte[] toByteArray() ๋ณ€ํ™˜ ๋ฉ”์„œ๋“œ
  • ~Value()๋กœ ๊ธฐ๋ณธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ ์กด์žฌ
  • ๋์— Exact๋ฅผ ๋ถ™์—ฌ์„œ ๋ณ€ํ™˜ํ•œ ํƒ€์ž…์˜ ๋ฒ”์œ„์— ์†ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ๋„ ์กด์žฌ

BigInteger์˜ ์—ฐ์‚ฐ

  • ์ •์ˆ˜ํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์ž & ์ˆ˜ํ•™์ ์ธ ๊ณ„์‚ฐ์„ ์ง€์›ํ•ด ์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋“ค ์ •์˜
  • BigInteger๋Š” ๋ถˆ๋ณ€์ด๋ฏ€๋กœ, ๋ฐ˜ํ™˜ ํƒ€์ž…์ด BigInteger

๋น„ํŠธ ์—ฐ์‚ฐ ๋ฉ”์„œ๋“œ

  • ํฐ ์ˆซ์ž๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์„ฑ๋Šฅ ํ–ฅ์ƒ์„ ์œ„ํ•ด ๋น„ํŠธ ๋‹จ์œ„๋กœ ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋“ค๋„ ์กด์žฌ
  • testBit(0)์œผ๋กœ ๊ฐ€์žฅ ๋งˆ์ง€๋ง‰ ๋น„ํŠธ๋ฅผ ํ™•์ธํ•˜์—ฌ ์ง์ˆ˜, ํ™€์ˆ˜ ๊ตฌ๋ถ„์„ ํšจ์œจ์ ์œผ๋กœ ๊ฐ€๋Šฅ

2.7 java.math.BigDecimal ํด๋ž˜์Šค

  • BigDecimal์€ ์ •์ˆ˜๋ฅผ ์ด์šฉํ•ด์„œ ์‹ค์ˆ˜๋ฅผ ํ‘œํ˜„
    • ์‹ค์ˆ˜๋ฅผ ์ •์ˆ˜์™€ 10์˜ ์ œ๊ณฑ์˜ ๊ณฑ์œผ๋กœ ํ‘œํ˜„
  • ๊ตฌ์„ฑ
    • private final BigInteger intVal; : ์ •์ˆ˜
    • private final int scale; : ์ง€์ˆ˜
    • private transient int precision; : ์ •๋ฐ€๋„(์ •์ˆ˜์˜ ์ „์ฒด ์ž๋ฆฟ์ˆ˜)

BigDecimal์˜ ์ƒ์„ฑ

  • ๋ฌธ์ž์—ด๋กœ ์ˆซ์ž๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ 
    • ๊ธฐ๋ณธ์  ๋ฆฌํ„ฐ๋Ÿด๋กœ๋Š” ํ‘œํ˜„์˜ ํ•œ๊ณ„๊ฐ€ ์žˆ์Œ
    • double, int, long ํƒ€์ž…์œผ๋กœ๋„ ๊ฐ€๋Šฅ
  • BigDecimal.valueOf(~)๋กœ๋„ ์ƒ์„ฑ ๊ฐ€๋Šฅ
  • double ํƒ€์ž…์˜ ๊ฐ’์„ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ๊ฐ–๋Š” ์ƒ์„ฑ์ž๋Š” ์˜ค์ฐจ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์Œ

๋‹ค๋ฅธ ํƒ€์ž…์œผ๋กœ์˜ ๋ณ€ํ™˜

  • String toPlainString() : ๋‹ค๋ฅธ ๊ธฐํ˜ธ ์—†์ด ์ˆซ์ž๋กœ๋งŒ ํ‘œํ˜„
  • String toString : ์ง€์ˆ˜ ํ˜•ํƒœ๋กœ๋„ ํ‘œํ˜„ ๊ฐ€๋Šฅ
  • ~Value() : ๊ธฐ๋ณธํ˜•์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ฉ”์„œ๋“œ๋„ ๊ฐ–๊ณ  ์žˆ์Œ
  • ๋์— Exact๊ฐ€ ๋ถ™์€ ๋ณ€ํ™˜ํ•œ ํƒ€์ž…์˜ ๋ฒ”์œ„์— ์†ํ•˜์ง€ ์•Š์œผ๋ฉด ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ๋ฐœ์ƒ์‹œํ‚ค๋Š” ๋ฉ”์„œ๋“œ๋„ ์กด์žฌ

BigDecimal์˜ ์—ฐ์‚ฐ

  • ์‹ค์ˆ˜ํ˜•์— ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ชจ๋“  ์—ฐ์‚ฐ์ž & ์ˆ˜ํ•™์  ๊ณ„์‚ฐ์„ ์‰ฝ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฉ”์„œ๋“œ๋“ค์ด ์ •์˜
  • BigDecimal๋„ ๋ถˆ๋ณ€์ด๋ฏ€๋กœ ์ƒˆ๋กœ์šด BigDecimal ํƒ€์ž…์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ๋ฐ˜ํ™˜
  • ์—ฐ์‚ฐ ๊ฒฐ๊ณผ์˜ ์ •์ˆ˜, ์ง€์ˆ˜, ์ •๋ฐ€๋„๊ฐ€ ๋‹ฌ๋ผ์ง

๋ฐ˜์˜ฌ๋ฆผ ๋ชจ๋“œ - divide()์™€ setScale()

  • ๋‚˜๋ˆ—์…ˆ์„ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•œ ๋ฉ”์„œ๋“œ๋Š” ๋‹ค์–‘ํ•œ ๋ฒ„์ „์ด ์กด์žฌ
  • ๋‚˜๋ˆ—์…ˆ์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ˜์˜ฌ๋ฆผํ•  ๊ฒƒ์ธ์ง€, ๋ช‡ ๋ฒˆ์งธ ์ž๋ฆฌ์—์„œ ๋ฐ˜์˜ฌ๋ฆผํ•  ๊ฒƒ์ธ์ง€๋ฅผ ๊ฒฐ์ •
  • ROUND_ ์ƒ์ˆ˜๋ฅผ ๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๋ฐ˜์˜ฌ๋ฆผ ์ฒ˜๋ฆฌ ๋ฐฉ๋ฒ•์„ ๊ฒฐ์ •
  • divide()๋กœ ๋‚˜๋ˆ—์…ˆํ•œ ๊ฒฐ๊ณผ๊ฐ€ ๋ฌดํ•œ ์†Œ์ˆ˜์ธ ๊ฒฝ์šฐ ๋ฐ˜์˜ฌ๋ฆผ ๋ชจ๋“œ๋ฅผ ์ง€์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด ArithmeticException ๋ฐœ์ƒ

java.math.MathContext

  • ๋ฐ˜์˜ฌ๋ฆผ ๋ชจ๋“œ์™€ ์ •๋ฐ€๋„๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๋†“์€ ํด๋ž˜์Šค
  • divide()์—์„œ๋Š” scale์ด ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋ฏธ
    • MathContext์—์„œ๋Š” precision์ด ์ •์ˆ˜์™€ ์†Œ์ˆ˜์  ์ดํ•˜๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•œ ์ž๋ฆฟ์ˆ˜๋ฅผ ์˜๋ฏธ

scale์˜ ๋ณ€๊ฒฝ

  • BigDecimal์„ 10์œผ๋กœ ๊ณฑํ•˜๊ฑฐ๋‚˜ ๋‚˜๋ˆ„๋Š” ๋Œ€์‹  scale์˜ ๊ฐ’์„ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์–ป์„ ์ˆ˜ ์žˆ์Œ
  • seScale() ๋ฉ”์„œ๋“œ๋กœ ๋ณ€๊ฒฝ ๊ฐ€๋Šฅ