== vs equals
- ๊ธฐ๋ณธํ ๋น๊ต : ==
- ๊ฐ์ฒด ๋น๊ต : equals
- ์์ (this)์ ์ฃผ์ด์ง ๊ฐ์ฒด(obj)๋ฅผ ๋น๊ตํ๋ค. ๊ฐ์ผ๋ฉด true, ๋ค๋ฅด๋ฉด false
- ๊ธฐ๋ณธ์ ์ผ๋ก ์ฃผ์๊ฐ์ ๋น๊ตํ๋ฏ๋ก ๊ฐ์ ๋น๊ตํ๋๋ก ์ค๋ฒ๋ผ์ด๋ฉ์ ํด์ผํ๋ค.
- obj์ ํ๋ณํ ํ ๊ฐ ๋น๊ต
๊ธฐ๋ณธํ๊ณผ ๊ฐ์ฒด(์ฐธ์กฐํ)์ ๋ํ ์ค๋ช ์ ๐์ฌ๊ธฐ ์ฐธ๊ณ !
instanceof ์ฐ์ฐ์
์ฐธ์กฐ๋ณ์ ํ๋ณํ ๊ฐ๋ฅ์ฌ๋ถ ํ์ธ์ ์ฌ์ฉ.
ํ๋ณํ์ ์กฐ์๊ณผ ์์๊ฐ์ ๋ณํ์์๋ง ๊ฐ๋ฅ.
์ฐธ์กฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ๋ฉค๋ฒ๋ณ์์ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๊ธฐ ์ํ์ฌ ํ๋ณํ์ ํ๋ค.
(์ฐธ์กฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ธ์คํด์ค์ ์๋ ๊ธฐ๋ฅ์ ๋ชจ๋ ์ฌ์ฉํ๊ธฐ ์ํ์ฌ ํ๋ณํ์ ํ๋ค.)
์) Car์์๋ ์์ํ์ ์ ๋ฉ์๋๋ ์ฌ์ฉํ๊ธฐ ์ํด์ FireEngine์ผ๋ก ํ๋ณํํ๊ณ FireEngine์ ๋ฉ์๋๋ฅผ ํธ์ถํ ์ ์๋ค.
ํ๋ณํ ๋จ๊ณ
- ๋ณํํ ๋ ํ๋ณํ ํด๋ ๋๋์ง ํ์ธ์ ํด์ผํ๋ค. → instanceof ์ฌ์ฉ
- ํ๋ณํ
๋ฐ๋์ ํ์ธํ๊ณ ํ๋ณํํด์ผํ๋ค. ์์ ํ์ง ํ์ธํ๋ ๋จ๊ณ๋ผ๊ณ ๋ณผ ์ ์๋ค.
void doWork(Car c){
if (c instanceof FireEngine) {
FireEngine fe = (FireEngine)c;
fe.water();
...
}
}
๊ทธ ์ด์ ๋ ์๋ฐ์์๋ ๋คํ์ฑ์ด ๋๋๊น ๋ฉ์๋์ ๋งค๊ฐ๋ณ์๋ก Car c๊ฐ ์ฌ ๋ Car๋๋ Car์ ๋ชจ๋ ์์์ด ๋ค์ด์ฌ ์ ์๋ค. ๊ทธ๋ฌ๋ฉด ๋ฉ์๋์์๋ ์ด๋ ๊ฐ์ฒด๊ฐ ๋ค์ด์ฌ ์ง ๋ชจ๋ฅด๋๊น ํ๋ณํํ๊ธฐ ์ ์ ๋ฌผ์ด๋ด์ผํ๋ค. (โต ํ์ ๊ด๊ณ๊ฐ์ ํ๋ณํ์ ๋ง์์ผ ํจ)
if (c instanceof FireEngine)
c๊ฐ FireEngine์ด๋? c๊ฐ FireEngine์ ์์์ด๋? ๋ผ๊ณ ๋ฌผ์ด๋ณด๋ ๊ฒ.
์ ์ํ ์ ์, ์์๊ณ์ธต๋์์ ์๊ธฐ์์ ์ ํฌํจํ ์กฐ์๋ค์ ๋ชจ๋ ์ฐธ์ด ๋์จ๋ค. → ์กฐ์ํ์
์ผ๋ก๋ ํ๋ณํ์ด ๊ฐ๋ฅํ๋ค.
์ ๋ฆฌ
- ==๋ ๊ธฐ๋ณธํ ๊ฐ ๋น๊ต ๋ ์ฌ์ฉ๋๊ณ , equals๋ ๊ฐ์ฒด ๋น๊ตํ ๋ ์ฌ์ฉํ๋ค.
- equals๋ ์ฃผ์๊ฐ์ ๋น๊ตํ๋ฏ๋ก ๊ฐ์ฒด์ ๊ฐ์ ๋น๊ตํ๊ณ ์ถ๋ค๋ฉด ์ค๋ฒ๋ผ์ด๋ฉํด์ผํ๋ค.
- ์ค๋ฒ๋ผ์ด๋ฉ ํ ๋, ๋น๊ตํ๊ณ ์ํ๋ ๋ฉค๋ฒ๋ฅผ ๋ง์ถ๊ธฐ ์ํ์ฌ ํ๋ณํ์ ์ฌ์ฉํ๋ค.
- ํ๋ณํ์ ์ฐธ์กฐ๋ณ์๋ฅผ ๋ณ๊ฒฝํจ์ผ๋ก์จ ์ฌ์ฉํ ์ ์๋ ๋ฉค๋ฒ์ ๊ฐฏ์๋ฅผ ์กฐ์ ํ๊ธฐ ์ํ์ฌ ์ฌ์ฉํ๋ค.
- ์ฐธ์กฐ๋ณ์๋ฅผ ํ๋ณํํ๊ธฐ ์ ์ ํ๋ณํ ๊ฐ๋ฅ์ฌ๋ถ๋ฅผ ํ์ผํ ๋ instanceof ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๋ค.
์ฐธ๊ณ
'๐ > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] ์๋ฐ ๊ฐ์ ๋จธ์ (Java Virtual Machine) (0) | 2021.07.28 |
---|---|
[Java] Primitive type vs Reference type (0) | 2021.04.18 |
[Java] HashMap, LinkedHashMap, TreeMap, Hashtable ์ฐจ์ด (0) | 2021.04.03 |
[Java] int ์ Integer ์ฐจ์ด์ (0) | 2020.09.08 |
[Java] finalize ๋ฉ์๋ (0) | 2020.09.08 |
๋๊ธ