๐ง ์๋ฐ ์ฐธ์กฐ ํ์ ๊ณผ ์ฐธ์กฐ ๋ณ์ _ Chap 05-1
๐ง ์๋ฐ ์ฐธ์กฐ ํ์ ๊ณผ ์ฐธ์กฐ ๋ณ์ _ Chap 05-1
๐ท๏ธ Tags:
Java,์ฐธ์กฐํ์,๊ธฐ๋ณธํ์,String,null,Week5
โจ ํ์ต ํค์๋
- ๊ธฐ๋ณธ ํ์ vs ์ฐธ์กฐ ํ์ ์ฐจ์ด ์ดํดํ๊ธฐ
- ์ฐธ์กฐ ํ์ ๋ณ์์ null ํ ๋น ๊ฐ๋ฅ์ฑ ์ดํดํ๊ธฐ
- NullPointerException ๋ฐ์ ์๋ฆฌ ํ์
- String ๊ฐ์ฒด์ ํน์ง๊ณผ ๋น๊ต ์ฐ์ฐ ๊ฒฐ๊ณผ ๋ถ์
๐ ๊ธฐ๋ณธ ํ์ ๊ณผ ์ฐธ์กฐ ํ์
| ํญ๋ชฉ | ๊ธฐ๋ณธ ํ์ | ์ฐธ์กฐ ํ์ |
|---|---|---|
| ์ ์ฅ ๋ด์ฉ | ์ค์ ๊ฐ (๋ฆฌํฐ๋ด) | ๋ฉ๋ชจ๋ฆฌ ์ฃผ์ (๊ฐ์ฒด์ ์์น) |
| ์์ ํ์ | int, double, boolean ๋ฑ | ๋ฐฐ์ด, String, ํด๋์ค, ์ธํฐํ์ด์ค ๋ฑ |
| ์ด๊ธฐ๊ฐ | ์ซ์๋ 0, boolean์ false ๋ฑ | null (์ฃผ์ ์์) |
๐ง ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์์ญ ๊ฐ์
- ๐๏ธ ๋ฉ์๋ ์์ญ: ํด๋์ค, static ๋ณ์, ๋ฉ์๋ ์ ๋ณด ์ ์ฅ
- ๐ง ํ(Heap) ์์ญ: new๋ก ์์ฑ๋ ๊ฐ์ฒด, ๋ฐฐ์ด์ด ์ ์ฅ๋จ
- ๐งฎ JVM ์คํ ์์ญ: ๋ฉ์๋ ํธ์ถ ์๋ง๋ค ํ๋ ์ ์์ฑ
๐ ์คํ ์์ญ ํน์ง:
- ๊ธฐ๋ณธ ํ์ ๋ณ์ โ ์คํ์ ๊ฐ ์์ฒด ์ ์ฅ
- ์ฐธ์กฐ ํ์ ๋ณ์ โ ํ์ ์ฃผ์๊ฐ ์ ์ฅ
- ๋ธ๋ก์ด ๋๋๋ฉด ์๋์ผ๋ก ์คํ์์ ์ ๊ฑฐ๋จ
๐ null ๊ฐ ์ด๋?
๐ ํน์ง:
- ์ฐธ์กฐ ํ์ ๋ณ์๋ null์ ๊ฐ์ง ์ ์์
- null์ธ์ง ์ฌ๋ถ๋ ๋น๊ต ์ฐ์ฐ์(==, !=)๋ก ํ์ธ ๊ฐ๋ฅ
- null ์ํ์์ ๊ฐ์ฒด์ ํ๋๋ ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ์์ธ ๋ฐ์ โ NullPointerException
๐ป ์์
String str1 = null;
String str2 = "hello";
System.out.println(str1 == null); // true
System.out.println(str2 != null); // true
System.out.println(str1 == str2); // false
๐ ๋ฌธ์์ด (String) ํ์ ์ด๋?
- ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ์ฒ๋ฆฌํ๋ ๋ฐ ์ฌ์ฉ๋๋ฉฐ, ๊ธฐ๋ณธ ํ์ ์ฒ๋ผ ๋ค๋ค์ง ์ ์์ง๋ง ์ฌ์ค์ ๊ฐ์ฒด์
- ๋ฌธ์์ด ์ ์ธ ์, ์๋ฐ์ดํ๋ฅผ ์ฌ์ฉํด์ผํจ
โจ ๋ฌธ์์ด ์ ์ธ ๋ฐฉ๋ฒ
| ์ ์ธ ๋ฐฉ์ | ์ค๋ช |
|---|---|
| String str = โhelloโ; | ๋ฌธ์์ด ๋ฆฌํฐ๋ด. ์์ํ(String Pool)์ ์ ์ฅ๋จ |
| String str = new String(โhelloโ); | new ์ฐ์ฐ์๋ก ๊ฐ์ฒด ์์ฑ. ํ ๋ฉ๋ชจ๋ฆฌ์ ์๋ก์ด ๊ฐ์ฒด ์์ฑ๋จ |
โจ ๋ฌธ์์ด ๋น๊ต ๋ฐฉ์
| ๋น๊ต ๋ฐฉ์ | ์๋ฏธ | ์ฌ์ฉ ๋ฉ์๋/์ฐ์ฐ์ |
|---|---|---|
| ์ฃผ์(์ฐธ์กฐ) ๋น๊ต | ๋ ๋ณ์์ ๊ฐ์ฒด ์ฃผ์๊ฐ ๊ฐ์๊ฐ? | == ๋๋ != |
| ๋ด์ฉ ๋น๊ต | ๋ฌธ์์ด ์์ ๊ธ์๊ฐ ๊ฐ์๊ฐ? | equals() ๋ฉ์๋ |
โ ๏ธ ์ฃผ์ํ ์
- == ์ฐ์ฐ์๋ โ๊ฐ์ ๊ฐ์ฒด(์ฃผ์)์ธ๊ฐ?โ๋ง ๋น๊ต ๊ฐ๋ฅํจ
- ๋ฌธ์์ด ๊ฐ์ด ๊ฐ์๋ new String()์ผ๋ก ๋ง๋ ๊ฐ์ฒด๋ ์ฃผ์๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ==์ false๊ฐ ๋์ด
- ๋ฌธ์์ด ๋ด์ฉ ๋น๊ต๋ ๋ฐ๋์ equals() ๋ฉ์๋๋ฅผ ์ฌ์ฉ
๐ฌ ๋ฌธ์์ด ์์
String a = "hello";
String b = "hello";
String c = new String("hello");
System.out.println(a == b); // true - ๊ฐ์ ๋ฆฌํฐ๋ด โ ๊ฐ์ ์ฃผ์
System.out.println(a == c); // false - new๋ก ์์ฑ๋ ๋ณ๋ ๊ฐ์ฒด
System.out.println(a.equals(c)); // true - ๋ฌธ์์ด ๋ด์ฉ์ ๊ฐ์