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 ์ธ์ง ์ ๋ฌด๋ฅผ returnrequreNonNull()
์ ํด๋น ๊ฐ์ฒด๊ฐ 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์ ๊ฐ๋ ฅํ ๊ธฐ๋ฅ์ ์ง์
- ์ ๊ท์ ์ ์์ ๋ฐ์ดํฐ ๋น๊ต ๊ณผ์
- Pattern ํด๋์ค์ compile ํธ์ถ ํ pattern ์ธ์คํด์ค๋ฅผ ์ป์
- Pattern ํด๋์ค์ Matcher ์ธ์คํด์ค๋ฅผ ํธ์ถ
- 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() ๋ฉ์๋๋ก ๋ณ๊ฒฝ ๊ฐ๋ฅ