๐ 1๋จ๊ณ ๋ณธ๋ฌธ: ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ด๋?
1. ๊ธฐ๋ณธํ(Primitive Type)์ด๋?
- ์ซ์, ๋ฌธ์, ์ฐธ/๊ฑฐ์ง ๊ฐ์ ๊ฐ๋จํ ๊ฐ์ ์ ์ฅํ๋ ๋ณ์์ ๋๋ค.
- ๊ฐ ์์ฒด๊ฐ ์ ์ฅ๋ฉ๋๋ค.
- ์ปดํจํฐ์ Stack(์คํ) ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๋ฉฐ, ๋ฉ์๋๊ฐ ๋๋๋ฉด ์๋์ผ๋ก ์ฌ๋ผ์ง๋๋ค.
์์ 1: ์ซ์ ์ ์ฅ
int age = 10;
int
: ์ ์ํ ํ์ (์์์ ์๋ ์ซ์)age
: ๋ณ์ ์ด๋ฆ (์ซ์๋ฅผ ์ ์ฅํ ์์ ์ด๋ฆ)10
: ์ ์ฅ๋ ๊ฐ (age๋ผ๋ ์์ ์์ 10์ด ๋ค์ด ์์)
๐น ๋น์ : ์์์ ์ซ์ ์ข ์ด ๋ฃ๊ธฐ
age
๋ผ๋ ์ด๋ฆํ๊ฐ ๋ถ์ ์์์ โ10โ์ด๋ผ๊ณ ์ ํ ์ข ์ด๊ฐ ๋ค์ด ์์- ์์ ์์๋ ์ซ์ ๊ฐ ์์ฒด๊ฐ ์ ์ฅ๋จ
์์ 2: ๋ฌธ์์ ์ฐธ/๊ฑฐ์ง
char grade = 'A';
boolean isActive = true;
char
: ๋ฌธ์ํ ํ์ (ํ ๊ธ์)boolean
: ์ฐธ/๊ฑฐ์งํ ํ์ (true
๋๋false
๋ง ์ ์ฅ)
๐น ๋น์ : ์์์ ๊ธ์ ์ข ์ด ๋ฃ๊ธฐ
grade
๋ผ๋ ์์์๋ โAโ๋ผ๊ณ ์ ํ ์ข ์ด๊ฐ ๋ค์ด ์์isActive
๋ผ๋ ์์์๋ โ์ฐธ(True)โ๋ผ๊ณ ์ ํ ์ข ์ด
์ ๋ฆฌ: ๊ธฐ๋ณธํ ๋ณ์์ ํน์ง
- ๊ฐ์ ์ ์ฅํ ๋ ์์์ ์ง์ ๋ฃ๋ ๊ฒ๊ณผ ๊ฐ์
- ๊ฐ ์์ฒด๊ฐ ์์ ์์ ๋ค์ด๊ฐ
- ์์๊ฐ Stack ๋ฉ๋ชจ๋ฆฌ์ ์์ด๊ณ , ํ๋ก๊ทธ๋จ์ด ๋๋๋ฉด ์๋์ผ๋ก ์ฌ๋ผ์ง
2. ์ฐธ์กฐํ(Reference Type)์ด๋?
String
,๋ฐฐ์ด(Array)
,ํด๋์ค(Class)
๊ฐ์ ๋ณต์กํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅ- ๊ฐ ์์ฒด๊ฐ ์๋ โ์ฃผ์โ๋ฅผ ์ ์ฅํฉ๋๋ค.
- Heap(ํ) ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ , ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ ์ฌ์ฉํ์ง ์๋ ๋ฐ์ดํฐ๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
์์ 1: ๋ฌธ์์ด(String) ์ ์ฅ
String name = "ํ๊ธธ๋";
String
: ๋ฌธ์์ด ํ์ (์ฌ๋ฌ ๊ธ์๋ฅผ ํ ๋ฒ์ ์ ์ฅ)name
: ๋ณ์ ์ด๋ฆ (๋ฌธ์์ด์ ์ ์ฅํ ์์ ์ด๋ฆ)"ํ๊ธธ๋"
: ์ ์ฅ๋ ๊ฐ (์ด๋ฆ์ด ํ๊ธธ๋์ธ ์ฌ๋)
๐น ๋น์ : ์ฃผ์๊ฐ ์ ํ ์ข ์ด
name
์์์๋"ํ๊ธธ๋"
์ด ์ง์ ๋ค์ด์๋ ๊ฒ ์๋๋ผ"ํ๊ธธ๋"
์ด ์ ์ฅ๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ํ ์ง๋ ๊ฐ์ ์ข ์ด๊ฐ ๋ค์ด ์์
์์ 2: ๋ฐฐ์ด(Array) ์ ์ฅ
int[] scores = {90, 85, 95};
int[]
: ์ ์ ๋ฐฐ์ด ํ์ (์ฌ๋ฌ ๊ฐ์ ์ซ์๋ฅผ ํ ๋ฒ์ ์ ์ฅ)scores
: ๋ณ์ ์ด๋ฆ (๋ฐฐ์ด์ ์ ์ฅํ ์์ ์ด๋ฆ){90, 85, 95}
: ์ ์ฅ๋ ๊ฐ (์ ์ 3๊ฐ)
๐น ๋น์ : ์ฃผ์๊ฐ ์ ํ ์ง๋
scores
์์์๋90, 85, 95
๊ฐ ์ง์ ๋ค์ด์๋ ๊ฒ ์๋๊ณ- ์ด ๊ฐ๋ค์ด ์ ์ฅ๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ํ ์ง๋ ๊ฐ์ ์ข ์ด๊ฐ ๋ค์ด ์์
์ ๋ฆฌ: ์ฐธ์กฐํ ๋ณ์์ ํน์ง
- Heap ๋ฉ๋ชจ๋ฆฌ์ ์ค์ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋จ
- ๋ณ์์๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ์ฅ๋จ (์ฆ, ์ง๋๊ฐ ๋ค์ด ์๋ ๊ฒ)
- *๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ **์ฌ์ฉํ์ง ์๋ Heap ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌ
3. ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ์ฐจ์ด์ ์์ฝ
๊ตฌ๋ถ | ๊ธฐ๋ณธํ(Primitive Type) | ์ฐธ์กฐํ(Reference Type) |
---|---|---|
์ ์ฅ๋๋ ๊ฐ | ๊ฐ ์์ฒด | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ (์ง๋) |
์ ์ฅ ์์น | Stack ๋ฉ๋ชจ๋ฆฌ | Heap ๋ฉ๋ชจ๋ฆฌ |
์์ | int , double , char , boolean |
String , ๋ฐฐ์ด , ํด๋์ค |
๋ฉ๋ชจ๋ฆฌ ๊ด๋ฆฌ | ๋ฉ์๋ ์ข ๋ฃ ์ ์๋ ์ญ์ | ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ ์ ๋ฆฌ |
4. ํ๋์ ๋ณด๋ ๋น์
- ๊ธฐ๋ณธํ: ์์์ ๊ฐ ์์ฒด๊ฐ ๋ค์ด ์๋ ๊ฒ
- ์:
int num = 10;
โnum
์์ ์์10
์ด ์ ํ ์ข ์ด๊ฐ ๋ค์ด ์์
- ์:
- ์ฐธ์กฐํ: Heap ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๊ฐ ์ ํ ์ง๋๊ฐ ๋ค์ด ์๋ ๊ฒ
- ์:
String name = "ํ๊ธธ๋";
โname
์์ ์์๋"ํ๊ธธ๋"
์ด ์ ํ ์ง๋๊ฐ ์์ - ์ค์
"ํ๊ธธ๋"
์ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋จ
- ์:
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ๊ธฐ๋ณธํ์ Stack, ์ฐธ์กฐํ์ Heap์ ์ ์ฅ
- ๊ธฐ๋ณธํ์ ๊ฐ ์์ฒด ์ ์ฅ, ์ฐธ์กฐํ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ ์ ์ฅ
- *Heap ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)**๊ฐ ์ ๋ฆฌ
- String์ ์ฐธ์กฐํ์ด๋ฉฐ, ๊ฐ์ด ์๋ ์ฃผ์๊ฐ ์ ์ฅ๋จ
- Wrapper ํด๋์ค(
Integer
,Double
๋ฑ)๋ก ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ๋ณํ ๊ฐ๋ฅ
๐ ํ๋์ ๋ณด๋ ์์ฝ
- ๊ธฐ๋ณธํ: Stack ์ ์ฅ, ๊ฐ ์์ฒด ์ ์ฅ (
int
,double
,char
,boolean
) - ์ฐธ์กฐํ: Heap ์ ์ฅ, ์ฃผ์ ์ ์ฅ (
String
,๋ฐฐ์ด
,ํด๋์ค
) - Wrapper ํด๋์ค:
Integer
,Double
๋ฑ์ผ๋ก Auto-boxing, Auto-unboxing ์ง์ - Heap ๋ฉ๋ชจ๋ฆฌ๋ ๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ ์๋ ์ ๋ฆฌ
๐ 2๋จ๊ณ ๋ณธ๋ฌธ: ํ๋ณํ์ด๋? (ํ์ ๋ณํ)
1. ํ๋ณํ(Type Casting)์ด๋?
- ํ๋ณํ์ ๋ณ์์ ๋ฐ์ดํฐ ํ์ ์ ๋ค๋ฅธ ํ์ ์ผ๋ก ๋ฐ๊พธ๋ ๊ฒ์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ ์๋ฅผ ์ค์๋ก ๋ฐ๊พธ๊ฑฐ๋ ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊พธ๋ ๊ฒ์ด ํ๋ณํ์ ๋๋ค.
- ์ซ์ ์์๋ฅผ ๋ค๋ฅธ ํฌ๊ธฐ์ ์์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋น์ ํ ์ ์์ต๋๋ค.
- ์์ ์์์ ์๋ ๋ฌผ๊ฑด์ ํฐ ์์๋ก ์ฎ๊ธฐ๊ฑฐ๋
- ํฐ ์์์ ์๋ ๋ฌผ๊ฑด์ ์์ ์์๋ก ์ฎ๊ธธ ๋ ๋ด์ฉ๋ฌผ์ด ์ผ๋ถ ์์ด์ง ์ ์์
2. ๊ธฐ๋ณธํ โ ๊ธฐ๋ณธํ ํ๋ณํ
๊ธฐ๋ณธํ๋ผ๋ฆฌ๋ ์๋ก ํ๋ณํ์ด ๊ฐ๋ฅํฉ๋๋ค.
- ์:
int
,double
,char
๋ฑ - ๋ ๊ฐ์ง ๋ฐฉ๋ฒ์ด ์์ต๋๋ค:
- ์๋ ํ๋ณํ (๋ฌต์์ ๋ณํ)
- ๊ฐ์ ํ๋ณํ (๋ช ์์ ๋ณํ)
1) ์๋ ํ๋ณํ (๋ฌต์์ ๋ณํ)
- ์์ ํฌ๊ธฐ ํ์ โ ํฐ ํฌ๊ธฐ ํ์ ์ผ๋ก ์๋ ๋ณํ๋ฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ค์ด ์๊ธฐ ๋๋ฌธ์ ์๋ฐ๊ฐ ์๋์ผ๋ก ๋ณํํด ์ค๋๋ค.
- ์์๋ฅผ ๋ ํฐ ์์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ ๋น์ ํ ์ ์์ต๋๋ค.
int num = 10;
double d = num; // int โ double ์๋ ๋ณํ
๐น ๋น์ : ์์ ์์ โ ํฐ ์์
num
์ด๋ผ๋ ์์ ์์์ ๋ค์ด ์๋10
์d
๋ผ๋ ํฐ ์์์ ์ฎ๊ฒจ ๋ด์ต๋๋ค.- ํฐ ์์์ ์์ ๋ฌผ๊ฑด์ด ๋ค์ด๊ฐ๋ฏ๋ก ๋ฌธ์ ์์
2) ๊ฐ์ ํ๋ณํ (๋ช ์์ ๋ณํ)
- ํฐ ํฌ๊ธฐ ํ์ โ ์์ ํฌ๊ธฐ ํ์ ์ผ๋ก ๋ณํํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ์ฑ์ด ์๊ธฐ ๋๋ฌธ์ ๊ฐ๋ฐ์๊ฐ ๊ฐ์ ๋ก ๋ณํํด์ผ ํฉ๋๋ค.
- ํฐ ์์๋ฅผ ์์ ์์๋ก ์ฎ๊ธธ ๋ ๋ด์ฉ๋ฌผ์ด ์ผ๋ถ ์์ด์ง ์ ์์
double d = 9.99;
int num = (int) d; // double โ int ๊ฐ์ ๋ณํ (์์์ ์์ค)
๐น ๋น์ : ํฐ ์์ โ ์์ ์์
d
๋ผ๋ ํฐ ์์์ ๋ค์ด ์๋9.99
๋ฅผnum
์ด๋ผ๋ ์์ ์์์ ์ฎ๊ฒจ ๋ด์ต๋๋ค.- ์ด๋ ์์์ (.99)์ด ์๋ ค ๋๊ฐ๊ณ ์ ์ ๋ถ๋ถ(9)๋ง ์ ์ฅ๋ฉ๋๋ค.
์๋ ํ๋ณํ๊ณผ ๊ฐ์ ํ๋ณํ ์์ฝ
ํ๋ณํ ์ข ๋ฅ | ์ค๋ช | ์์ |
---|---|---|
์๋ ํ๋ณํ | ์์ ํ์ โ ํฐ ํ์ | int โ double , char โ int |
๊ฐ์ ํ๋ณํ | ํฐ ํ์ โ ์์ ํ์ | double โ int , long โ int |
๋ฐ์ดํฐ ์์ค ์ฌ๋ถ | ์์ | ์์ ์ ์์ (์์์ ๋ฑ) |
์ฌ์ฉ๋ฒ | ์๋ ๋ณํ | (ํ์
) ๊ฐ ์ผ๋ก ๋ณํ |
3. ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ํ๋ณํ
- ์ง์ ๋ณํํ ์ ์์ต๋๋ค.
- ๊ธฐ๋ณธํ์ ๊ฐ ์์ฒด๋ฅผ, ์ฐธ์กฐํ์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ์ ์ฅํ๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ๋จ, Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฅํฉ๋๋ค:
Integer
,Double
,Boolean
๋ฑ ๊ธฐ๋ณธํ์ ๊ฐ์ฒด๋ก ๋ค๋ฃจ๋ ํด๋์ค- Auto-boxing๊ณผ Auto-unboxing์ด๋ผ๋ ๊ธฐ๋ฅ ๋๋ถ์ ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
Wrapper ํด๋์ค๋ฅผ ํตํ ํ๋ณํ
int num = 50;
Integer obj = num; // Auto-boxing (๊ธฐ๋ณธํ โ ์ฐธ์กฐํ)
int newNum = obj; // Auto-unboxing (์ฐธ์กฐํ โ ๊ธฐ๋ณธํ)
- Auto-boxing: ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ์๋ ๋ณํ
- Auto-unboxing: ์ฐธ์กฐํ โ ๊ธฐ๋ณธํ ์๋ ๋ณํ
๐น ๋น์ : ํฌ์ฅ๊ณผ ๊ฐ๋ด
num
์ด๋ผ๋ ์ซ์ ์์๋ฅผobj
๋ผ๋ ํฌ์ฅ ์์์ ๋ฃ์ (Auto-boxing)obj
ํฌ์ฅ ์์๋ฅผ ์ด์ด์newNum
์์์ ๋ค์ ๋ด์ (Auto-unboxing)
Wrapper ํด๋์ค์ ์ฅ์
- ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ์ฝ๊ฒ ๋ณํํ ์ ์์ต๋๋ค.
- ์ปฌ๋ ์
(List, Map ๋ฑ)์ ๊ธฐ๋ณธํ์ ์ ์ฅํ ์ ์์ต๋๋ค.
- ์:
ArrayList<Integer>
๋int
๋์Integer
ํ์ ์ ์ ์ฅ
- ์:
- null ๊ฐ์ ์ ์ฅํ ์ ์์ต๋๋ค. (๊ธฐ๋ณธํ์
null
์ ์ฅ ๋ถ๊ฐ)
4. String(๋ฌธ์์ด) โ ๊ธฐ๋ณธํ ํ๋ณํ
String
์ ์ฐธ์กฐํ์ด์ง๋ง, ์์ธ์ ์ผ๋ก ๊ธฐ๋ณธํ๊ณผ ํ๋ณํ์ด ๊ฐ๋ฅํฉ๋๋ค.- ์ฃผ๋ก ์ซ์๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๊ฑฐ๋, ๋ฌธ์์ด์ ์ซ์๋ก ๋ฐ๊ฟ ๋ ์ฌ์ฉํฉ๋๋ค.
1) ๊ธฐ๋ณธํ โ ๋ฌธ์์ด
String.valueOf()
๋๋+ ""
์ฌ์ฉ
int num = 100;
String str = String.valueOf(num); // "100"
String str2 = num + ""; // "100"
2) ๋ฌธ์์ด โ ๊ธฐ๋ณธํ
Integer.parseInt()
๋ฑ ์ฌ์ฉ
String str = "100";
int num = Integer.parseInt(str); // 100
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ์๋ ํ๋ณํ(๋ฌต์์ ๋ณํ): ์์ ํ์ โ ํฐ ํ์ (๋ฐ์ดํฐ ์์ค ์์)
- ๊ฐ์ ํ๋ณํ(๋ช ์์ ๋ณํ): ํฐ ํ์ โ ์์ ํ์ (๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ)
- ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ๋ณํ์ Wrapper ํด๋์ค๋ฅผ ์ฌ์ฉ (Auto-boxing, Auto-unboxing)
- String โ ๊ธฐ๋ณธํ ๋ณํ์
String.valueOf()
์Integer.parseInt()
์ฌ์ฉ - Wrapper ํด๋์ค๋ ์ปฌ๋ ์ ์ ๊ธฐ๋ณธํ ์ ์ฅ ๋ฐ null ์ ์ฅ ๊ฐ๋ฅ
๐ ํ๋์ ๋ณด๋ ์์ฝ
- ์๋ ํ๋ณํ: ์์ ์์ โ ํฐ ์์ (์์ )
- ๊ฐ์ ํ๋ณํ: ํฐ ์์ โ ์์ ์์ (๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ)
- Wrapper ํด๋์ค: ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ์๋ ๋ณํ (ํฌ์ฅ๊ณผ ๊ฐ๋ด ๋น์ )
- String ๋ณํ:
String.valueOf()
,Integer.parseInt()
์ฌ์ฉ
์ด๋ ๊ฒ ์ ๋ฆฌํ๋ฉด ๋ ธ์ (Notion)์์ ๊ฐ๋ ์ฑ ๋๊ณ ๊ตฌ์กฐํ๋ ๋ฌธ์๋ก ์ ํฉํ๊ฒ ๊ตฌ์ฑ๋ฉ๋๋ค.
ํน์ ์์ ํ๊ฑฐ๋ ์ถ๊ฐํ๊ณ ์ถ์ ๋ด์ฉ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์!
๐ข 3๋จ๊ณ ๋ณธ๋ฌธ: ์ค์ํ ํ๋ณํ๊ณผ ์ค์ฐจ ๋ฌธ์
1. ์ค์ํ ๋ฐ์ดํฐ ํ์ ์ด๋?
- ์ค์ํ์ ์์์ ์ด ์๋ ์ซ์๋ฅผ ์ ์ฅํฉ๋๋ค.
- ์๋ฐ์๋ ๋ ๊ฐ์ง ์ค์ํ ํ์
์ด ์์ต๋๋ค:
- float: ์์ ํฌ๊ธฐ์ ์์์ ์ซ์ (์์์ ์ดํ ์ฝ 7์๋ฆฌ ์ ๋ฐ๋)
- double: ํฐ ํฌ๊ธฐ์ ์์์ ์ซ์ (์์์ ์ดํ ์ฝ 15์๋ฆฌ ์ ๋ฐ๋)
float f = 3.14f;
double d = 3.141592653589793;
f
:float
ํ์ (์์ ํฌ๊ธฐ) โ ์ซ์ ๋ค์f
๋ฅผ ๋ถ์ฌ์ผ ํจd
:double
ํ์ (ํฐ ํฌ๊ธฐ) โ ๊ธฐ๋ณธ ์ค์ํ ํ์ (์ซ์ ๋ค์d
์๋ต ๊ฐ๋ฅ)
2. float โ double ํ๋ณํ
float
์์double
๋ก๋ ์๋ ํ๋ณํ๋ฉ๋๋ค.- ์์ ์์ โ ํฐ ์์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด๋ฏ๋ก ์์
double
์์float
๋ก๋ ๊ฐ์ ํ๋ณํํด์ผ ํฉ๋๋ค.- ํฐ ์์ โ ์์ ์์๋ก ์ฎ๊ธฐ๋ ๊ฒ์ด๋ฏ๋ก ์์์ ์ดํ ๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ
์๋ ํ๋ณํ (float โ double)
float f = 3.14f;
double d = f; // float โ double ์๋ ๋ณํ
System.out.println(d); // ์ถ๋ ฅ: 3.14
- *์์ ์์(f)์ ์๋
3.14
๋ฅผ **ํฐ ์์(d)์ ์ฎ๊น๋๋ค. - ๋ฐ์ดํฐ ์์ค ์์ด ๊ทธ๋๋ก ์ ์ฅ๋ฉ๋๋ค.
๊ฐ์ ํ๋ณํ (double โ float)
double d = 3.141592653589793;
float f = (float) d; // double โ float ๊ฐ์ ๋ณํ
System.out.println(f); // ์ถ๋ ฅ: 3.1415927
- *ํฐ ์์(d)**์ ์๋
3.141592653589793
์ - *์์ ์์(f)**์ ์ฎ๊น๋๋ค.
- ์์์ ์ดํ ์ผ๋ถ ๋ฐ์ดํฐ๊ฐ ์์ค๋๊ณ ,
3.1415927
๋ก ์ ์ฅ๋ฉ๋๋ค.
๐น ๋น์ : ํฐ ์ปต โ ์์ ์ปต
- ํฐ ์ปต(d)์ ๋ฌผ์ด ๊ฐ๋ ์ฐผ์ ๋, ์์ ์ปต(f)์ผ๋ก ์ฎ๊ธฐ๋ฉด
- ๋์น๋ฉด์ ์ผ๋ถ ๋ฌผ์ด ๋ฒ๋ ค์ง (์์์ ๋ฐ์ดํฐ ์์ค)
3. ์ค์ํ์์ ๋ฐ์ํ๋ ์ค์ฐจ ๋ฌธ์ (๋ถ๋์์์ ์ค์ฐจ)
- ์ปดํจํฐ๋ 0๊ณผ 1๋ก ์ซ์๋ฅผ ํํํฉ๋๋ค.
- ์์์ ์ซ์๋ฅผ ์ ํํ๊ฒ ํํํ๊ธฐ ์ด๋ ต๊ธฐ ๋๋ฌธ์ ์ค์ฐจ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค.
์์: ๋ถ๋์์์ ์ค์ฐจ ๋ฌธ์
double a = 0.1;
double b = 0.2;
System.out.println(a + b); // ์ถ๋ ฅ: 0.30000000000000004
System.out.println(a + b == 0.3); // ์ถ๋ ฅ: false
0.1
๊ณผ0.2
๋ ์ด์ง์๋ก ์๋ฒฝํ๊ฒ ํํํ ์ ์๋ ์์์ ์ ๋๋ค.- 0.30000000000000004๋ก ์ถ๋ ฅ๋๋ฉฐ, 0.3๊ณผ ๊ฐ์ง ์๋ค๊ณ ์ธ์ํฉ๋๋ค.
๐น ๋น์ : ๋์ ๋ฐ์ชฝ์ ์ ํํ ๋๋๊ธฐ ์ด๋ ต๋ค!
- ๋์ ๋ฐ์ชฝ์ ์๋ฅด๋ฉด ์ ํํ ๋๊ฐ์ด ๋๋ ์ ์๋ฏ์ด,
- ์ปดํจํฐ๋ ์ผ๋ถ ์์์ ์ซ์๋ฅผ ์ ํํ ํํํ ์ ์์
4. ๋ถ๋์์์ ์ค์ฐจ ํด๊ฒฐ ๋ฐฉ๋ฒ
1) Math.abs()
๋ฅผ ์ฌ์ฉํ ๋น๊ต
- ๋ ์ค์์ ์ฐจ์ด๋ฅผ ์ ๋๊ฐ์ผ๋ก ๊ตฌํด์ ๋งค์ฐ ์์ผ๋ฉด ๊ฐ์ ๊ฐ์ผ๋ก ์ธ์
-
์ค์ฐจ ๋ฒ์๋ฅผ ์ค์ ํ์ฌ ๋น๊ต
double a = 0.1; double b = 0.2; double result = a + b; boolean isEqual = Math.abs(result - 0.3) < 0.000001; System.out.println(isEqual); // ์ถ๋ ฅ: true
0.000001
๊ฐ์ ๋งค์ฐ ์์ ์ค์ฐจ ๋ฒ์ ์์ ๋ค์ด์ค๋ฉด ๊ฐ๋ค๊ณ ํ๋จ
๐น ๋น์ : ๋์ ๋ ๊ฐ์ ๋ฌด๊ฒ ์ฐจ์ด๊ฐ ์์ฃผ ์์ผ๋ฉด ๊ฐ์ ๋ฌด๊ฒ๋ก ๋ณด๊ธฐ
- ์์ ํ ๋๊ฐ์ง๋ ์์ง๋ง ์ฐจ์ด๊ฐ ๊ฑฐ์ ์์ผ๋ฉด ๊ฐ์ ๋ฌด๊ฒ๋ก ์ธ์
2) BigDecimal
ํด๋์ค๋ฅผ ์ฌ์ฉํ ํด๊ฒฐ ๋ฐฉ๋ฒ
- ์ ํํ ์์์ ๊ณ์ฐ์ ์ํด ์ฌ์ฉํ๋ ํด๋์ค์ ๋๋ค.
- ์ฃผ๋ก ๊ธ์ต ๊ณ์ฐ์ด๋ ์ ๋ฐ๋๊ฐ ์ค์ํ ๊ณ์ฐ์ ์ฌ์ฉ๋ฉ๋๋ค.
import java.math.BigDecimal;
BigDecimal a = new BigDecimal("0.1");
BigDecimal b = new BigDecimal("0.2");
BigDecimal result = a.add(b);
System.out.println(result); // ์ถ๋ ฅ: 0.3
- ๋ฌธ์์ด ํํ๋ก ์ ๋ ฅํ๋ฉด ์ ํํ ์์์ ๊ณ์ฐ ๊ฐ๋ฅ
new BigDecimal(0.1)
์ฒ๋ผ ์ค์๋ฅผ ์ง์ ์ ๋ ฅํ๋ฉด ๋ถ๋์์์ ์ค์ฐจ ๋ฐ์
๐น ๋น์ : ์ ๋ฐ ์ ์ธ ์ฌ์ฉํ๊ธฐ
- ์ ํํ ๋ฌด๊ฒ๋ฅผ ์ฌ๊ธฐ ์ํด ์ ๋ฐ ์ ์ธ์ ์ฌ์ฉํ๋ ๊ฒ์ฒ๋ผ,
- BigDecimal์ ์ ํํ ์์์ ๊ณ์ฐ์ ์ํด ์ฌ์ฉ
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- float โ double: ์๋ ํ๋ณํ (๋ฌธ์ ์์)
- double โ float: ๊ฐ์ ํ๋ณํ ํ์, ์ ๋ฐ๋ ์์ค ๋ฐ์ ๊ฐ๋ฅ
- ๋ถ๋์์์ ์ค์ฐจ ๋ฌธ์ ๋ ์ปดํจํฐ๊ฐ ์์์ ์ ์ ํํ ํํํ ์ ์์ด์ ๋ฐ์
- ์ค์ฐจ ํด๊ฒฐ ๋ฐฉ๋ฒ:
Math.abs()
๋ก ์ค์ฐจ ๋ฒ์ ์ค์ ํ ๋น๊ตBigDecimal
ํด๋์ค๋ก ์ ํํ ์์์ ๊ณ์ฐ
- ๊ธ์ต ๊ณ์ฐ์ด๋ ์ ๋ฐ๋๊ฐ ์ค์ํ ๊ฒฝ์ฐ์๋
BigDecimal
์ฌ์ฉ
๐ ํ๋์ ๋ณด๋ ์์ฝ
- float โ double ํ๋ณํ
float โ double
: ์๋ ๋ณํ (์์ )double โ float
: ๊ฐ์ ๋ณํ (์ ๋ฐ๋ ์์ค ๊ฐ๋ฅ)
- ๋ถ๋์์์ ์ค์ฐจ ๋ฌธ์
0.1
,0.2
๊ฐ์ ์์๋ฅผ ์ ํํ ํํํ ์ ์์Math.abs()
๋ก ์ค์ฐจ ๋ฒ์ ์ค์ ๋๋BigDecimal
์ฌ์ฉ
- BigDecimal ์ฌ์ฉ๋ฒ
new BigDecimal("์ซ์")
์ฒ๋ผ ๋ฌธ์์ด ํํ๋ก ์ ๋ ฅadd()
๋ฉ์๋๋ก ๋ํ๊ธฐ (.add()
โ ๋ํ๊ธฐ,.subtract()
โ ๋นผ๊ธฐ)
๐ 4๋จ๊ณ ๋ณธ๋ฌธ: Stack๊ณผ Heap์ ์ฐจ์ด์
1. Stack(์คํ)๊ณผ Heap(ํ)์ด๋?
- *Stack(์คํ)๊ณผ **Heap(ํ)์ ์ปดํจํฐ ๋ฉ๋ชจ๋ฆฌ์์ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ ๊ณต๊ฐ์ ๋๋ค.
- ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ด ๊ฐ๊ฐ ๋ค๋ฅธ ๊ณณ์ ์ ์ฅ๋๋ฉฐ, ๊ด๋ฆฌ ๋ฐฉ์๋ ๋ค๋ฆ ๋๋ค.
1) Stack(์คํ)์ด๋?
- ์๊ณ ๋น ๋ฅธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค.
- ๊ธฐ๋ณธํ ๋ณ์์ ๋ฉ์๋ ์คํ ์ ๋ณด๊ฐ ์ ์ฅ๋ฉ๋๋ค.
- LIFO(Last In, First Out) ๊ตฌ์กฐ: ๋ง์ง๋ง์ ๋ค์ด์จ ๋ฐ์ดํฐ๊ฐ ๊ฐ์ฅ ๋จผ์ ๋๊ฐ
- ์: ์ฑ ์ ์๋ก ์์๋ค๊ฐ ๋งจ ์ ์ฑ ๋ถํฐ ๊บผ๋ด๋ ๋ฐฉ์
- ๋ฉ์๋๊ฐ ๋๋๋ฉด ์๋์ผ๋ก ์ฌ๋ผ์ง๋๋ค.
- ์: ๋ฉ์๋๊ฐ ๋๋๋ฉด ์ฑ ํ ๋ฌถ์์ด ํต์งธ๋ก ์ฌ๋ผ์ง
์์: Stack์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ
int num = 10;
double pi = 3.14;
num
๊ณผpi
๋ ๊ธฐ๋ณธํ ๋ณ์์ด๋ฏ๋ก Stack์ ์ ์ฅ๋ฉ๋๋ค.-
Stack ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ:
| pi | 3.14 | | num | 10 | |--------- ๋ฉ๋ชจ๋ฆฌ ๋ (์ ์ผ ์) --------|
๐น ๋น์ : ์ ์ ์๊ธฐ
num
์ด๋ผ๋ ์ ์์10
์ด๋ผ๋ ์ซ์๋ฅผ ์ ์ด์ ์์- ๊ทธ ์์
pi
๋ผ๋ ์ ์์3.14
๋ฅผ ์ ์ด์ ์์ - *๋ง์ง๋ง์ ์์ pi(3.14)๊ฐ **๊ฐ์ฅ ๋จผ์ ๊บผ๋ด์ง
Stack์ ํน์ง ์์ฝ
- ๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ ๋ฉ์๋ ์คํ ์ ๋ณด ์ ์ฅ
- LIFO ๊ตฌ์กฐ (๋ง์ง๋ง์ ์์ ๊ฒ์ด ๊ฐ์ฅ ๋จผ์ ๊บผ๋ด์ง)
- ๋ฉ์๋๊ฐ ๋๋๋ฉด ์๋์ผ๋ก ์ฌ๋ผ์ง
- ๋น ๋ฅด์ง๋ง ํฌ๊ธฐ๊ฐ ์์ (
StackOverflowError
๋ฐ์ ๊ฐ๋ฅ)
2) Heap(ํ)์ด๋?
- ํฌ๊ณ ๋๋ฆฐ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋๋ค.
new
๋ก ์์ฑ๋ ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์ ์ฅ๋ฉ๋๋ค.- ์ฐธ์กฐํ ๋ณ์๋ Heap์ ์ ์ฅ๋ ๊ฐ์ฒด์ ์ฃผ์๋ฅผ Stack์ ์ ์ฅํฉ๋๋ค.
- *๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ **์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ์ ๋ฆฌํฉ๋๋ค.
์์: Heap์ ์ ์ฅ๋๋ ๋ฐ์ดํฐ
String name = "ํ๊ธธ๋";
int[] scores = {90, 85, 95};
"ํ๊ธธ๋"
๋ฌธ์์ด๊ณผ{90, 85, 95}
๋ฐฐ์ด์ Heap์ ์ ์ฅ๋ฉ๋๋ค.name
๊ณผscores
๋ Heap์ ์ ์ฅ๋ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ Stack์ ์ ์ฅ๋ฉ๋๋ค.
๋ฉ๋ชจ๋ฆฌ ๊ตฌ์กฐ:
-
Stack ๋ฉ๋ชจ๋ฆฌ
| scores | โ 0x1000 | | name | โ 0x2000 | |---------- Stack ๋ -------------|
-
Heap ๋ฉ๋ชจ๋ฆฌ
| 0x1000 | {90, 85, 95} | | 0x2000 | "ํ๊ธธ๋" | |---------- Heap ๋ -------------|
name
์"ํ๊ธธ๋"
์ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(0x2000)๋ฅผ Stack์ ์ ์ฅ"ํ๊ธธ๋"
์์ฒด๋ Heap ๋ฉ๋ชจ๋ฆฌ 0x2000 ์์น์ ์ ์ฅscores
๋{90, 85, 95}
๋ฐฐ์ด์ ์ฃผ์(0x1000)๋ฅผ Stack์ ์ ์ฅ{90, 85, 95}
๋ฐฐ์ด์ Heap ๋ฉ๋ชจ๋ฆฌ 0x1000 ์์น์ ์ ์ฅ
๐น ๋น์ : ์ง๋์ ์ง
name
์์์๋"ํ๊ธธ๋"
์ด๋ผ๋ ์ง ์ฃผ์๊ฐ ์ ํ ์ง๋๊ฐ ๋ค์ด ์์- ์ค์
"ํ๊ธธ๋"
์ด๋ผ๋ ์ง์ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ง์ด์ ธ ์์ scores
์์์๋ ์ง๋๊ฐ ๋ค์ด ์๊ณ , ์ค์ ์ ์ ๋ฐฐ์ด์ Heap ๋ฉ๋ชจ๋ฆฌ์ ์์
Heap์ ํน์ง ์์ฝ
- ์ฐธ์กฐํ ๋ฐ์ดํฐ(๊ฐ์ฒด, ๋ฐฐ์ด)๊ฐ ์ ์ฅ๋จ
- Stack์๋ Heap ์ฃผ์(์ง๋)๊ฐ ์ ์ฅ๋จ
- *๊ฐ๋น์ง ์ปฌ๋ ํฐ(GC)๊ฐ **์ฌ์ฉํ์ง ์๋ ๊ฐ์ฒด๋ฅผ ์๋์ผ๋ก ์ ๋ฆฌ
- ํฌ๊ธฐ๊ฐ ํฌ์ง๋ง ์๋๊ฐ ๋๋ฆผ (
OutOfMemoryError
๋ฐ์ ๊ฐ๋ฅ)
3. Stack๊ณผ Heap์ ์ฐจ์ด์ ์์ฝ
ํญ๋ชฉ | Stack(์คํ) | Heap(ํ) |
---|---|---|
์ ์ฅ ์์น | ๋ฉ์๋ ํธ์ถ ์ ์์ฑ | new ๋ก ์์ฑ๋ ๊ฐ์ฒด ์ ์ฅ |
์ ์ฅ ๋ฐ์ดํฐ | ๊ธฐ๋ณธํ ๋ณ์, ๋ฉ์๋ ํธ์ถ ์ ๋ณด | ๊ฐ์ฒด, ๋ฐฐ์ด |
๊ด๋ฆฌ ๋ฐฉ์ | ์๋ ์ญ์ (๋ฉ์๋ ์ข ๋ฃ ์) | Garbage Collector(GC)๊ฐ ์ ๋ฆฌ |
์๋ | ๋งค์ฐ ๋น ๋ฆ | ์๋์ ์ผ๋ก ๋๋ฆผ |
์๋ฌ ๋ฐ์ | StackOverflowError (์ฌ๊ท ๋ฌดํ ํธ์ถ) |
OutOfMemoryError (๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ) |
4. ์คํ ์ค๋ฒํ๋ก์ฐ(StackOverflowError)๋?
- Stack ๋ฉ๋ชจ๋ฆฌ๊ฐ ๊ฐ๋ ์ฐผ์ ๋ ๋ฐ์ํ๋ ์๋ฌ์ ๋๋ค.
- ์ฌ๊ท ํจ์๊ฐ ๋ฌดํ ํธ์ถ๋ ๋ ๋ฐ์ํ๊ธฐ ์ฝ์ต๋๋ค.
public class StackOverflowExample {
public static void recursive() {
recursive(); // ์์ ์ ๊ณ์ ํธ์ถ (๋ฌดํ ๋ฃจํ)
}
public static void main(String[] args) {
recursive();
}
}
๐น ๋น์ : ์ ์ ์๊ธฐ ๋ฌดํ ๋ฐ๋ณต
- ์ ์๊ฐ ๋ฌดํํ ์์ด๋ฉด ์ ์ํ์ด ๋ฌด๋์ง
- Stack ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ฌดํํ ์์ด๋ฉด
StackOverflowError
๋ฐ์
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- Stack: ๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ ๋ฉ์๋ ์คํ ์ ๋ณด๊ฐ ์ ์ฅ๋จ
- Heap: ์ฐธ์กฐํ ๋ฐ์ดํฐ(๊ฐ์ฒด, ๋ฐฐ์ด)๊ฐ ์ ์ฅ๋จ
- Stack์ ๋น ๋ฅด๊ณ ์๋ ๊ด๋ฆฌ, Heap์ ๋๋ฆฌ๊ณ GC๊ฐ ์ ๋ฆฌ
- StackOverflowError: ์ฌ๊ท ํธ์ถ ๋ฌดํ ๋ฐ๋ณต ์ ๋ฐ์
- OutOfMemoryError: Heap ๋ฉ๋ชจ๋ฆฌ ๋ถ์กฑ ์ ๋ฐ์
๐ ํ๋์ ๋ณด๋ ์์ฝ
- Stack: ๊ธฐ๋ณธํ, ๋ฉ์๋ ์ ๋ณด ์ ์ฅ โ ๋น ๋ฅด๊ณ ์๋ ์ญ์
- Heap: ๊ฐ์ฒด, ๋ฐฐ์ด ์ ์ฅ โ ๋๋ฆฌ์ง๋ง ํฌ๊ณ , GC๊ฐ ์ ๋ฆฌ
- StackOverflowError: Stack์ด ๊ฐ๋ ์ฐฐ ๋ ๋ฐ์ (๋ฌดํ ์ฌ๊ท ํธ์ถ)
- OutOfMemoryError: Heap์ด ๊ฐ๋ ์ฐฐ ๋ ๋ฐ์ (๋ฉ๋ชจ๋ฆฌ ๋์)
๐ 5๋จ๊ณ ๋ณธ๋ฌธ: String(๋ฌธ์์ด)์ด๋?
1. String(๋ฌธ์์ด)์ด๋?
- *String(๋ฌธ์์ด)์ **์ฌ๋ฌ ๊ธ์๋ฅผ ์ด์ด๋ถ์ธ ๊ฒ์ ๋๋ค.
- *๋ฌธ์ ํ๋(
char
)๊ฐ ์ฌ๋ฌ ๊ฐ ๋ชจ์ฌ์ **๋ฌธ์์ด(String
)์ด ๋ฉ๋๋ค. - ์๋ฐ์์ ๋ฌธ์์ด์ ์ฐธ์กฐํ์
๋๋ค.
- ๊ฐ ์์ฒด๊ฐ ์๋ โ์ฃผ์โ๋ฅผ ์ ์ฅํฉ๋๋ค.
- Heap ๋ฉ๋ชจ๋ฆฌ์ ๋ฌธ์์ด์ด ์ ์ฅ๋๊ณ ,
- Stack ๋ฉ๋ชจ๋ฆฌ์๋ ๋ฌธ์์ด์ด ์๋ ์ฃผ์(์ง๋)๊ฐ ์ ์ฅ๋ฉ๋๋ค.
์์: String ์ ์ธ๊ณผ ์ฌ์ฉ
String name = "ํ๊ธธ๋";
String greeting = "์๋
, " + name + "!";
System.out.println(greeting); // ์ถ๋ ฅ: ์๋
, ํ๊ธธ๋!
name
์ด๋ผ๋ ์์์๋"ํ๊ธธ๋"
์ด ์ง์ ๋ค์ด์๋ ๊ฒ ์๋๊ณ"ํ๊ธธ๋"
์ด ์ ์ฅ๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๊ฐ ์ ํ ์ง๋ ๊ฐ์ ์ข ์ด๊ฐ ๋ค์ด ์์ต๋๋ค."์๋ , ํ๊ธธ๋!"
๋ฌธ์์ด๋ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ , ์ฃผ์๊ฐgreeting
์ ์ ์ฅ๋ฉ๋๋ค.
String์ ํน์ง ์์ฝ
- ๋ฌธ์์ด์ ์ฐธ์กฐํ โ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ
- ๊ฐ ์์ฒด๊ฐ ์๋ ์ฃผ์(์ง๋)๊ฐ Stack์ ์ ์ฅ
- ๋ถ๋ณ(Immutable): ํ ๋ฒ ์์ฑ๋ ๋ฌธ์์ด์ ๋ณ๊ฒฝํ ์ ์์
- ๋ฌธ์์ด์ ๋ฐ๊พธ๋ฉด ์๋ก์ด ๋ฌธ์์ด์ด Heap์ ์์ฑ๋๊ณ ์ฃผ์๋ง ๋ฐ๋
- ์:
"ํ๊ธธ๋"
์์"๊น์ฒ ์"
๋ก ๋ฐ๊พธ๋ฉด"๊น์ฒ ์"
๊ฐ ์๋ก ๋ง๋ค์ด์ง๊ณ ,name
์ด ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ ๋ฐ๋
2. String์ ๋ถ๋ณ(Immutable) ํน์ง
- *String์ ๋ถ๋ณ(Immutable)**ํฉ๋๋ค.
- ํ ๋ฒ ๋ง๋ค์ด์ง ๋ฌธ์์ด์ ๋ฐ๊ฟ ์ ์๊ณ , ๋ฐ๊พธ๋ ค๋ฉด ์๋ก์ด ๋ฌธ์์ด์ด ์์ฑ๋ฉ๋๋ค.
์์: String ๋ถ๋ณ์ ํน์ง
String str1 = "Hello";
String str2 = str1;
str1 = str1 + " World";
System.out.println(str1); // ์ถ๋ ฅ: Hello World
System.out.println(str2); // ์ถ๋ ฅ: Hello
"Hello"
๊ฐ Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ,str1
๊ณผstr2
๊ฐ ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํดstr1
์" World"
๋ฅผ ๋ถ์ด๋ฉด- ๊ธฐ์กด์
"Hello"
๋ ๊ทธ๋๋ก ๋จ์์๊ณ - ์๋ก์ด ๋ฌธ์์ด
"Hello World"
๊ฐ ์์ฑ๋๋ฉฐ str1
์ ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํค๊ณ ,str2
๋ ๋ณ๊ฒฝ๋์ง ์์
- ๊ธฐ์กด์
๐น ๋น์ : ๋ณต์ฌํ ์ง๋
str1
๊ณผstr2
๋ ๊ฐ์ ์ง๋๋ฅผ ๋ณต์ฌํด์ ๋ค๊ณ ์์str1
์ด ์๋ก์ด ๊ณณ์ผ๋ก ์ด์ฌ๊ฐ๋ฉดstr2
๋ ์๋ ์ง ์ฃผ์๊ฐ ์ ํ ์ง๋๋ฅผ ๊ทธ๋๋ก ๋ค๊ณ ์์
3. String ๋ณํ ๋ฐฉ๋ฒ
1) ๊ธฐ๋ณธํ โ String(๋ฌธ์์ด) ๋ณํ
- ์ซ์, ๋ฌธ์ ๋ฑ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ๋ฌธ์์ด๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
String.valueOf()
๋๋ *+ ""
๋ฅผ ์ฌ์ฉํฉ๋๋ค.
int num = 100;
String str1 = String.valueOf(num); // "100"
String str2 = num + ""; // "100"
String.valueOf()
๋ ๋ชจ๋ ํ์ ์ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ์ ์์+ ""
๋ ์ซ์์ ๋น ๋ฌธ์์ด์ ๋ํด ๋ฌธ์์ด๋ก ๋ง๋ฆ
๐น ๋น์ : ์ด๋ฆํ ๋ถ์ด๊ธฐ
- ์ซ์
100
์ ์ด๋ฆํ(""
)๋ฅผ ๋ถ์ด๋ฉด"100"
์ด๋ผ๋ ๊ธ์๋ก ๋ฐ๋
2) String(๋ฌธ์์ด) โ ๊ธฐ๋ณธํ ๋ณํ
- ๋ฌธ์์ด์์ ์ซ์ ๋ฑ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ก ๋ฐ๊พธ๋ ๋ฐฉ๋ฒ
- Wrapper ํด๋์ค์
parseXXX()
๋ฉ์๋๋ฅผ ์ฌ์ฉํฉ๋๋ค.
String str = "100";
int num = Integer.parseInt(str); // 10
Integer.parseInt()
๋ ๋ฌธ์์ด์ ์ ์(int)๋ก ๋ฐ๊ฟ๋๋ค.-
๋ฌธ์์ด ๋ด๋ถ์ ์ซ์๊ฐ ์๋ ๋ฌธ์๊ฐ ์์ผ๋ฉด ์๋ฌ ๋ฐ์
String str = "100a"; int num = Integer.parseInt(str); // NumberFormatException ๋ฐ์
๐น ๋น์ : ์ด๋ฆํ ๋ผ๊ธฐ
"100"
์ด๋ผ๋ ๊ธ์์์ ์ด๋ฆํ(""
)๋ฅผ ๋ผ๋ฉด ์ซ์100
์ด ๋์ด
4. StringBuffer์ StringBuilder
- String์ ๋ถ๋ณ์ด๋ผ์ ๋ฌธ์์ด์ ์์ฃผ ๋ฐ๊พธ๋ฉด ์๋ก์ด ๊ฐ์ฒด๊ฐ ๊ณ์ ์์ฑ๋ฉ๋๋ค.
- StringBuffer์ StringBuilder๋ ๋ฌธ์์ด์ ์์ ๋กญ๊ฒ ๋ณ๊ฒฝํ ์ ์์ต๋๋ค.
- Heap ๋ฉ๋ชจ๋ฆฌ์ ํ๋์ ๊ฐ์ฒด๋ง ์ ์งํ๋ฉฐ ๋ด์ฉ๋ง ๋ฐ๊ฟ
- ๋ฌธ์์ด์ ์์ฃผ ์ถ๊ฐ, ์์ , ์ญ์ ํ ๋ ์ฑ๋ฅ์ด ์ข์
์์: StringBuffer ์ฌ์ฉ๋ฒ
StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb.toString()); // ์ถ๋ ฅ: Hello World
.append()
๋ ๋ฌธ์์ด์ ๋ค์ ์ถ๊ฐํฉ๋๋ค.- ๊ธฐ์กด ๋ฌธ์์ด์ ๋ฐ๊พธ์ง ์๊ณ , ํ๋์ ๊ฐ์ฒด์์ ๋ด์ฉ๋ง ๋ฐ๊ฟ
String
์ผ๋ก ๋ฐ๊พธ๋ ค๋ฉด.toString()
์ฌ์ฉ
๐น ๋น์ : ์์ ๊ฐ๋ฅํ ์ด๋ฆํ
- String์ ์ด๋ฆํ๊ฐ ๋ผ์ด์ง์ง ์์ง๋ง,
- StringBuffer๋ ์์ ๊ฐ๋ฅํ ์ด๋ฆํ๋ผ์ ๊ธ์๋ฅผ ๋ง๋ถ์ผ ์ ์์
String vs StringBuffer vs StringBuilder
ํน์ง | String | StringBuffer | StringBuilder |
---|---|---|---|
๋ณ๊ฒฝ ๊ฐ๋ฅ ์ฌ๋ถ | ๋ถ๋ณ (Immutable) | ๋ณ๊ฒฝ ๊ฐ๋ฅ (๊ฐ๋ณ) | ๋ณ๊ฒฝ ๊ฐ๋ฅ (๊ฐ๋ณ) |
๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ | ์ ๊ฐ์ฒด ์์ฑ | ํ๋์ ๊ฐ์ฒด์์ ๋ด์ฉ ๋ณ๊ฒฝ | ํ๋์ ๊ฐ์ฒด์์ ๋ด์ฉ ๋ณ๊ฒฝ |
์๋ | ๋๋ฆผ (์ ๊ฐ์ฒด ์์ฑ) | ๋น ๋ฆ | ๊ฐ์ฅ ๋น ๋ฆ |
์ฐ๋ ๋ ์์ ์ฑ | ์ฐ๋ ๋ ์์ ํ์ง ์์ | ์ฐ๋ ๋ ์์ | ์ฐ๋ ๋ ์์ ํ์ง ์์ |
์ฌ์ฉ ์์ | ๋ณํ์ง ์๋ ๋ฌธ์์ด | ๋ฉํฐ์ฐ๋ ๋ ํ๊ฒฝ | ๋จ์ผ ์ฐ๋ ๋ ํ๊ฒฝ |
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- String์ ๋ถ๋ณ(Immutable) โ ์๋ก์ด ๋ฌธ์์ด์ด ์์ฑ๋๊ณ ์ฃผ์๋ง ๋ฐ๋
- String โ ๊ธฐ๋ณธํ:
Integer.parseInt()
์ฌ์ฉ - ๊ธฐ๋ณธํ โ String:
String.valueOf()
๋๋+ ""
์ฌ์ฉ - ๋ฌธ์์ด ์์ฃผ ์์ ํ ๋๋ StringBuffer ๋๋ StringBuilder ์ฌ์ฉ
- StringBuffer๋ ์ฐ๋ ๋ ์์ , StringBuilder๋ ๋น ๋ฅด์ง๋ง ์ฐ๋ ๋ ์์ ํ์ง ์์
๐ฆ 6๋จ๊ณ ๋ณธ๋ฌธ: Wrapper ํด๋์ค์ Auto-boxing
1. Wrapper ํด๋์ค๋?
- Wrapper ํด๋์ค๋ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ฒด๋ก ๋ค๋ฃฐ ์ ์๊ฒ ๋ง๋ ํด๋์ค์ ๋๋ค.
- ์๋ฐ์๋ 8๊ฐ์ ๊ธฐ๋ณธํ์ ๋์ํ๋ 8๊ฐ์ Wrapper ํด๋์ค๊ฐ ์์ต๋๋ค.
| ๊ธฐ๋ณธํ(Primitive Type) | Wrapper ํด๋์ค |
| โ | โ |
| int
| Integer
|
| double
| Double
|
| char
| Character
|
| boolean
| Boolean
|
| byte
| Byte
|
| short
| Short
|
| long
| Long
|
| float
| Float
|
- ์๋ฅผ ๋ค์ด,
int
๋ ๊ฐ ์์ฒด๋ฅผ ์ ์ฅํ์ง๋ง, Integer
๋ ๊ฐ ๋์ ๊ฐ์ฒด์ ์ฃผ์(์ง๋)๊ฐ ์ ์ฅ๋ฉ๋๋ค.
์์: ๊ธฐ๋ณธํ vs Wrapper ํด๋์ค
int num = 10; // ๊ธฐ๋ณธํ
Integer obj = new Integer(10); // Wrapper ํด๋์ค
num
: Stack์ ๊ฐ(10)์ด ์ง์ ์ ์ฅ๋จobj
: Stack์๋ ์ฃผ์(์ง๋)๊ฐ ์ ์ฅ๋๊ณ ,- *Heap์๋ ์ค์ ๊ฐ(10)**์ด ์ ์ฅ๋จ
๐น ๋น์ : ์ข ์ด์ ์์
num
์ ์ข ์ด์ ์ซ์ 10์ด ์ง์ ์ ํ ์์obj
๋ ์์์ ์ซ์๊ฐ ์ ํ ์ข ์ด๊ฐ ๋ค์ด ์์- ์ข ์ด๋ Heap์ ์ ์ฅ๋๊ณ ,
- ์์์๋ ์ข ์ด๊ฐ ๋ค์ด ์๋ ์ฅ์(์ฃผ์)๊ฐ ์ ํ ์ง๋๊ฐ ๋ค์ด ์์
Wrapper ํด๋์ค์ ํน์ง ์์ฝ
- ๊ธฐ๋ณธํ ๊ฐ์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃฐ ์ ์์
- ๊ฐ์ด ์๋ ์ฃผ์(์ง๋)๋ฅผ ์ ์ฅ (Heap์ ๊ฐ์ฒด๊ฐ ์ ์ฅ)
- null ๊ฐ์ ์ ์ฅ ๊ฐ๋ฅ
- ์ปฌ๋ ์
(List, Map ๋ฑ)์ ์ ์ฅ ๊ฐ๋ฅ
ArrayList<Integer>
์ฒ๋ผ ๊ธฐ๋ณธํ์ ์ปฌ๋ ์ ์ ์ ์ฅํ ์ ์์ง๋ง- Wrapper ํด๋์ค๋ ์ ์ฅํ ์ ์์
2. Auto-boxing๊ณผ Auto-unboxing
- Auto-boxing: ๊ธฐ๋ณธํ โ Wrapper ํด๋์ค๋ก ์๋ ๋ณํ
- Auto-unboxing: Wrapper ํด๋์ค โ ๊ธฐ๋ณธํ์ผ๋ก ์๋ ๋ณํ
Auto-boxing ์์
int num = 100;
Integer obj = num; // Auto-boxing
int num
์ดInteger obj
๋ก ์๋ ๋ณํ๋ฉ๋๋ค.- *num์ ๊ฐ(100)์ **Heap ๋ฉ๋ชจ๋ฆฌ์ ์ ์ฅ๋๊ณ ,
obj
์๋ Heap ์ฃผ์(์ง๋)๊ฐ ์ ์ฅ๋ฉ๋๋ค.
๐น ๋น์ : ์์์ ๋ด๊ธฐ
- ์ซ์ 100์ด ์ ํ ์ข ์ด๋ฅผ ์์์ ๋ด์์ ๋ณด๊ด
- ์์ ์์น๋ ์ง๋์ ํ์ํ๊ณ , ๊ทธ ์ง๋๋ฅผ
obj
๊ฐ ๊ฐ์ง๊ณ ์์
Auto-unboxing ์์
Integer obj = 200;
int num = obj; // Auto-unboxing
Integer obj
๊ฐint num
์ผ๋ก ์๋ ๋ณํ๋ฉ๋๋ค.obj
๊ฐ ๊ฐ๋ฆฌํค๋ Heap ์ฃผ์์์ ๊ฐ(200)์ ๊บผ๋ด์num
์ ์ง์ ์ ์ฅํฉ๋๋ค.
๐น ๋น์ : ์์์์ ๊บผ๋ด๊ธฐ
obj
๊ฐ ์ง๋๋ฅผ ๋ณด๊ณ ์์๊ฐ ์๋ ์ฅ์๋ก ์ด๋- ์์๋ฅผ ์ด์ด์ ์ซ์ 200์ด ์ ํ ์ข ์ด๋ฅผ ๊บผ๋ด๊ณ ,
- *์ข
์ด์ ์ ํ ์ซ์(200)๋ฅผ
num
์ **์ง์ ์ ์ฅ
Auto-boxing๊ณผ Auto-unboxing์ ์ฅ์
- ๊ธฐ๋ณธํ๊ณผ Wrapper ํด๋์ค๋ฅผ ํธ๋ฆฌํ๊ฒ ์์ด์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
- *์ปฌ๋ ์ (List, Map ๋ฑ)์ **๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์์ต๋๋ค.
- ํ๋ณํ ์ฝ๋๊ฐ ์ค์ด๋ค์ด ๊ฐ๋ ์ฑ์ด ์ข์์ง๋๋ค.
Auto-boxing๊ณผ Auto-unboxing ์ฃผ์์
-
null ๊ฐ์ Auto-unboxingํ๋ฉด NullPointerException์ด ๋ฐ์ํฉ๋๋ค.
Integer obj = null; int num = obj; // NullPointerException ๋ฐ์
-
Wrapper ํด๋์ค๋ ๋น๊ต ์ ์ฃผ์ํด์ผ ํฉ๋๋ค.
java ๋ณต์ฌํธ์ง Integer a = 100; Integer b = 100; System.out.println(a == b); // true Integer c = 1000; Integer d = 1000; System.out.println(c == d); // false
128 ~ 127
์ฌ์ด์ ๊ฐ์ ์บ์ฑ๋์ด ๊ฐ์ ์ฃผ์๋ฅผ ๊ฐ๋ฆฌํต๋๋ค.- ๊ทธ ์ธ์ ๊ฐ์ ์๋ก์ด ๊ฐ์ฒด๊ฐ ์์ฑ๋๋ฏ๋ก ์ฃผ์๊ฐ ๋ค๋ฆ ๋๋ค.
- ๊ฐ ์์ฒด๋ฅผ ๋น๊ตํ๋ ค๋ฉด
.equals()
๋ฅผ ์ฌ์ฉํด์ผ ํฉ๋๋ค.
.equals()
๋ฉ์๋๋ก ๋น๊ตํ๊ธฐ
Integer a = 1000;
Integer b = 1000;
System.out.println(a.equals(b)); // true
.equals()
๋ ๊ฐ ์์ฒด๋ฅผ ๋น๊ตํ๋ฏ๋ก ํญ์ ์ ํํ๊ฒ ๋น๊ตํ ์ ์์ต๋๋ค.
๐น ๋น์ : ์์ ์์ ๋ด์ฉ๋ฌผ ๋น๊ตํ๊ธฐ
==
๋ ์์๊ฐ ๊ฐ์์ง ํ์ธ โ ์์๊ฐ ๋ค๋ฅด๋ฉดfalse
.equals()
๋ ์์ ์์ ๋ด์ฉ๋ฌผ์ด ๊ฐ์์ง ํ์ธ โ ๋ด์ฉ๋ฌผ์ด ๊ฐ์ผ๋ฉดtrue
3. Wrapper ํด๋์ค์ ์ฃผ์ ๋ฉ์๋
๋ฉ์๋ | ์ค๋ช | ์์ |
---|---|---|
parseXXX() |
๋ฌธ์์ด โ ๊ธฐ๋ณธํ ๋ณํ | int num = Integer.parseInt("100"); |
valueOf() |
๋ฌธ์์ด โ Wrapper ํด๋์ค ๋ณํ | Integer obj = Integer.valueOf("100"); |
toString() |
Wrapper ํด๋์ค โ ๋ฌธ์์ด ๋ณํ | String str = obj.toString(); |
compareTo() |
๊ฐ ๋น๊ต (์์/0/์์ ๋ฐํ) |
int result = obj1.compareTo(obj2); |
equals() |
๊ฐ ์์ฒด๋ฅผ ๋น๊ต | boolean isEqual = obj1.equals(obj2); |
4. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- Wrapper ํด๋์ค๋ ๊ธฐ๋ณธํ์ ๊ฐ์ฒด์ฒ๋ผ ๋ค๋ฃฐ ์ ์๊ฒ ๋ง๋ ํด๋์ค
- Auto-boxing: ๊ธฐ๋ณธํ โ Wrapper ํด๋์ค๋ก ์๋ ๋ณํ
- Auto-unboxing: Wrapper ํด๋์ค โ ๊ธฐ๋ณธํ์ผ๋ก ์๋ ๋ณํ
- null ๊ฐ์ Auto-unboxingํ๋ฉด NullPointerException ๋ฐ์
- Wrapper ํด๋์ค๋
.equals()
๋ก ๊ฐ ๋น๊ตํด์ผ ์ ํํ๊ฒ ๋น๊ต ๊ฐ๋ฅ - *์ปฌ๋ ์ (List, Map ๋ฑ)**์ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ๋ ์ฌ์ฉ
๐ ํ๋์ ๋ณด๋ ์์ฝ
- Wrapper ํด๋์ค: ๊ธฐ๋ณธํ์ ๊ฐ์ฒด์ฒ๋ผ ์ฌ์ฉ (
int
โInteger
) - Auto-boxing: ๊ธฐ๋ณธํ โ Wrapper ํด๋์ค๋ก ์๋ ๋ณํ
- Auto-unboxing: Wrapper ํด๋์ค โ ๊ธฐ๋ณธํ์ผ๋ก ์๋ ๋ณํ
.equals()
๋ก ๊ฐ ๋น๊ต,==
๋ ์ฃผ์ ๋น๊ต- null ์ฃผ์:
Integer obj = null; int num = obj;
โNullPointerException
๋ฐ์
๐ 7๋จ๊ณ ๋ณธ๋ฌธ: ํ๋ณํ ์ฌํ ๊ฐ๋ ๋ฐ ๋ฉด์ ๋๋น
1. ํ๋ณํ(Type Casting)์ด ํ์ํ ์ด์
- ๋ฐ์ดํฐ ํ์ ๋ง๋ค ์ ์ฅ ๋ฐฉ์์ด ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋๋ค.
- ์๋ฅผ ๋ค์ด, ์ ์๋ ์์์ ์ด ์๊ณ , ์ค์๋ ์์์ ์ด ์์ต๋๋ค.
- ๋ค๋ฅธ ํ์
๋ผ๋ฆฌ ๊ณ์ฐํ๋ ค๋ฉด ๊ฐ์ ํ์
์ผ๋ก ๋ง์ถฐ์ผ ํฉ๋๋ค.
-
์:
int
์double
์ ๋ํ ๋๋ ๋ ์ค ํ๋๋ฅผ ๋ณํํด์ผ ํจint num = 10; double pi = 3.14; double result = num + pi; // int โ double ์๋ ๋ณํ
-
ํ๋ณํ์ ํ์์ฑ ์์ฝ
- ์๋ก ๋ค๋ฅธ ํ์ ์ ๊ณ์ฐํ๋ ค๋ฉด ๊ฐ์ ํ์ ์ผ๋ก ๋ง์ถฐ์ผ ํจ
- ์์ ํ์ โ ํฐ ํ์ : ์๋ ํ๋ณํ (์์ )
- ํฐ ํ์ โ ์์ ํ์ : ๊ฐ์ ํ๋ณํ (๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ)
2. ํ๋ณํ์ ์ข ๋ฅ ์์ฝ
- ๊ธฐ๋ณธํ โ ๊ธฐ๋ณธํ
- ์๋ ํ๋ณํ: ์์ ํ์
โ ํฐ ํ์
(์:
int โ double
) - ๊ฐ์ ํ๋ณํ: ํฐ ํ์
โ ์์ ํ์
(์:
double โ int
, ์์์ ์์ค ๊ฐ๋ฅ)
- ์๋ ํ๋ณํ: ์์ ํ์
โ ํฐ ํ์
(์:
- ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ
- ์ง์ ๋ณํ ๋ถ๊ฐ (๊ฐ ์์ฒด vs ์ฃผ์ ์ฐจ์ด ๋๋ฌธ)
- Wrapper ํด๋์ค ์ฌ์ฉ (Auto-boxing, Auto-unboxing)
- String โ ๊ธฐ๋ณธํ
String.valueOf()
๋๋+ ""
โ ๊ธฐ๋ณธํ โ StringInteger.parseInt()
โ String โ ๊ธฐ๋ณธํ
3. ํ์ ๋ณํ ์ฐ์ ์์ (ํ๋ณํ ๊ท์น)
- ์์ ํ์ โ ํฐ ํ์ ์ผ๋ก ์๋ ๋ณํ
- ๋ฎ์ ์ ๋ฐ๋ โ ๋์ ์ ๋ฐ๋๋ก ์๋ ๋ณํ
- ์๋ฐ์ ๊ธฐ๋ณธ ํ๋ณํ ์ฐ์ ์์๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค:
byte โ short โ int โ long โ float โ double
-
์๋ฅผ ๋ค์ด,
int
์double
์ ๋ํ๋ฉดint โ double
๋ก ์๋ ๋ณํ๋จint num = 10; double pi = 3.14; double result = num + pi; // int โ double ์๋ ๋ณํ
์์: ํ๋ณํ ์ฐ์ ์์
int a = 10;
double b = 3.14;
double result = a + b; // int โ double ์๋ ๋ณํ
a
๋int
(์์ ํ์ ),b
๋double
(ํฐ ํ์ )- int โ double๋ก ์๋ ๋ณํ๋์ด
result
๋double
ํ์ ์ด ๋จ
๐น ๋น์ : ํฐ ๋ฌผํต์ ์์ ๋ฌผ์ปต์ ๋ฌผ์ ๋ถ๊ธฐ
- ์์ ๋ฌผ์ปต(
int
)์ ๋ฌผ์ ํฐ ๋ฌผํต(double
)์ ๋ถ๋ ๊ฒ์ ๋ฌธ์ ์์ - ํฐ ๋ฌผํต(
double
)์ ๋ฌผ์ ์์ ๋ฌผ์ปต(int
)์ ๋ถ์ผ๋ฉด ๋์น๋ฉด์ ์ผ๋ถ๊ฐ ์์ค
๋ช ์์ ํ๋ณํ ์์ (ํฐ ํ์ โ ์์ ํ์ )
double pi = 3.14;
int num = (int) pi; // double โ int ๊ฐ์ ๋ณํ (์์์ ์์ค)
System.out.println(num); // ์ถ๋ ฅ: 3
double
์์int
๋ก ๊ฐ์ ํ๋ณํ- ์์์ ์ดํ๊ฐ ์๋ ค ๋๊ฐ๊ณ ์ ์ ๋ถ๋ถ๋ง ์ ์ฅ๋จ
๐น ๋น์ : ํฐ ๋ฌผํต์ ๋ฌผ์ ์์ ๋ฌผ์ปต์ ์ฎ๊ธฐ๊ธฐ
- ๋์น๋ ๋ฌผ์ ๋ฒ๋ ค์ง๊ณ ๋จ๋ ๋ถ๋ถ๋ง ์ ์ฅ๋จ (์์์ ์์ค)
4. instanceof ์ฐ์ฐ์ (ํ์ ํ์ธ)
- ๊ฐ์ฒด์ ํ์ ์ ํ์ธํ ๋ ์ฌ์ฉํฉ๋๋ค.
- ์ฃผ๋ก ํ๋ณํํ๊ธฐ ์ ์ ํ์ ์ ๊ฒ์ฌํ ๋ ์ฌ์ฉํฉ๋๋ค.
์์: instanceof ์ฌ์ฉ๋ฒ
Object obj = "Hello";
if (obj instanceof String) {
String str = (String) obj;
System.out.println(str.toUpperCase()); // ์ถ๋ ฅ: HELLO
}
obj
๊ฐ String ํ์ ์ธ์ง ํ์ธํ ํ,- ๋ฌธ์์ด๋ก ํ๋ณํํด์ ๋๋ฌธ์๋ก ๋ฐ๊ฟ
๐น ๋น์ : ์ง๋ ํ์ธํ๊ธฐ
obj
๊ฐ ๋ค๊ณ ์๋ ์ง๋๋ฅผ ํ์ธํด์- String ์ง์ ๊ฐ๋ฆฌํค๊ณ ์๋ค๋ฉด ๋ฌธ์์ด๋ก ๋ณํ
instanceof์ ํน์ง ์์ฝ
- ํ์ ์ ํ์ธํด์ ์์ ํ๊ฒ ํ๋ณํํ ์ ์์
-
์์ ๊ด๊ณ์์๋ ์ฌ์ฉ ๊ฐ๋ฅ
class Animal {} class Dog extends Animal {} Animal pet = new Dog(); System.out.println(pet instanceof Animal); // ์ถ๋ ฅ: true System.out.println(pet instanceof Dog); // ์ถ๋ ฅ: true
pet
์ Animal ํ์ ์ด๋ฉด์ Dog ํ์ ์ด๊ธฐ๋ ํจ (์์ ๊ด๊ณ)
5. ๊ธฐ์ ๋ฉด์ ๋๋น ์์ฝ
- ์์ ํ์ โ ํฐ ํ์ : ์๋ ํ๋ณํ (์์ )
- ํฐ ํ์ โ ์์ ํ์ : ๊ฐ์ ํ๋ณํ (๋ฐ์ดํฐ ์์ค ๊ฐ๋ฅ)
- instanceof ์ฐ์ฐ์๋ก ํ์ ํ์ธ ํ ํ๋ณํ
- ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ: Wrapper ํด๋์ค ์ฌ์ฉ (Auto-boxing, Auto-unboxing)
- String โ ๊ธฐ๋ณธํ:
String.valueOf()
,Integer.parseInt()
์ฌ์ฉ - ํ๋ณํ ์ฐ์ ์์:
byte โ short โ int โ long โ float โ double
- ๊ฐ ๋น๊ต ์
.equals()
์ฌ์ฉ,==
๋ ์ฃผ์ ๋น๊ต - ๋ถ๋์์์ ์ค์ฐจ ๋ฌธ์ ํด๊ฒฐ:
Math.abs()
๋๋BigDecimal
์ฌ์ฉ
๐ ํ๋์ ๋ณด๋ ์์ฝ
- ์๋ ํ๋ณํ: ์์ ํ์
โ ํฐ ํ์
(์:
int โ double
) - ๊ฐ์ ํ๋ณํ: ํฐ ํ์
โ ์์ ํ์
(์:
double โ int
, ์์์ ์์ค) - instanceof: ํ์ ํ์ธ ํ ์์ ํ๊ฒ ํ๋ณํ
- Wrapper ํด๋์ค: ๊ธฐ๋ณธํ โ ์ฐธ์กฐํ ์๋ ๋ณํ (
Integer
,Double
๋ฑ) - String ๋ณํ:
String.valueOf()
๋๋Integer.parseInt()
์ฌ์ฉ - ํ๋ณํ ์ฐ์ ์์:
byte โ short โ int โ long โ float โ double
- ๋ถ๋์์์ ์ค์ฐจ ํด๊ฒฐ:
Math.abs()
๋๋BigDecimal
์ฌ์ฉ