๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’Ž/Java

[Java] ==, equals, instanceof

by dar0m! 2020. 9. 9.

== vs equals

  • ๊ธฐ๋ณธํ˜• ๋น„๊ต : ==
  • ๊ฐ์ฒด ๋น„๊ต : equals
    • ์ž์‹ (this)์™€ ์ฃผ์–ด์ง„ ๊ฐ์ฒด(obj)๋ฅผ ๋น„๊ตํ•œ๋‹ค. ๊ฐ™์œผ๋ฉด true, ๋‹ค๋ฅด๋ฉด false
    • ๊ธฐ๋ณธ์ ์œผ๋กœ ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•˜๋ฏ€๋กœ ๊ฐ’์„ ๋น„๊ตํ•˜๋„๋ก ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•ด์•ผํ•œ๋‹ค.
    • obj์˜ ํ˜•๋ณ€ํ™˜ ํ›„ ๊ฐ’ ๋น„๊ต

๊ธฐ๋ณธํ˜•๊ณผ ๊ฐ์ฒด(์ฐธ์กฐํ˜•)์— ๋Œ€ํ•œ ์„ค๋ช…์€ ๐Ÿ‘‰์—ฌ๊ธฐ ์ฐธ๊ณ !

 

instanceof ์—ฐ์‚ฐ์ž

์ฐธ์กฐ๋ณ€์ˆ˜ ํ˜•๋ณ€ํ™˜ ๊ฐ€๋Šฅ์—ฌ๋ถ€ ํ™•์ธ์— ์‚ฌ์šฉ.

ํ˜•๋ณ€ํ™˜์€ ์กฐ์ƒ๊ณผ ์ž์†๊ฐ„์˜ ๋ณ€ํ™˜์—์„œ๋งŒ ๊ฐ€๋Šฅ.
์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ๋ฉค๋ฒ„๋ณ€์ˆ˜์˜ ๊ฐฏ์ˆ˜๋ฅผ ์กฐ์ ˆํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค.
(์ฐธ์กฐ๋ณ€์ˆ˜๋ฅผ ๋ณ€๊ฒฝํ•จ์œผ๋กœ์จ ์ธ์Šคํ„ด์Šค์˜ ์›๋ž˜ ๊ธฐ๋Šฅ์„ ๋ชจ๋‘ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•˜์—ฌ ํ˜•๋ณ€ํ™˜์„ ํ•œ๋‹ค.)

์˜ˆ) Car์—์„œ๋Š” ์ž์†ํƒ€์ž…์˜ ๋ฉ”์†Œ๋“œ๋„ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ FireEngine์œผ๋กœ ํ˜•๋ณ€ํ™˜ํ•˜๊ณ  FireEngine์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•  ์ˆ˜ ์žˆ๋‹ค.

 

ํ˜•๋ณ€ํ™˜ ๋‹จ๊ณ„

  1. ๋ณ€ํ™˜ํ•  ๋•Œ ํ˜•๋ณ€ํ™˜ ํ•ด๋„ ๋˜๋Š”์ง€ ํ™•์ธ์„ ํ•ด์•ผํ•œ๋‹ค. → instanceof ์‚ฌ์šฉ
  2. ํ˜•๋ณ€ํ™˜

๋ฐ˜๋“œ์‹œ ํ™•์ธํ•˜๊ณ  ํ˜•๋ณ€ํ™˜ํ•ด์•ผํ•œ๋‹ค. ์•ˆ์ „ํ•œ์ง€ ํ™•์ธํ•˜๋Š” ๋‹จ๊ณ„๋ผ๊ณ  ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

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 ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

 

์ฐธ๊ณ 

 

๋Œ“๊ธ€