equals()
equals()
์๋ฐ์์ ๋น๊ต๋ฅผ ํ ๋ ์ฐ์ฐ์ == ์ ์ฌ์ฉํ๋ค.
ํ์ง๋ง ๊ฐ์ฒด์ ๊ฐ์ฒด๋ผ๋ฆฌ์ ๋น๊ต์์๋ == ์ ์ฌ์ฉ ํ ์ ์๋ค.
์ด์ ๋ก๋ == ์ฐ์ฐ์๋ ๋์์ ๊ฐ๊ณผ ๊ฐ์ ๋น๊ตํ์ฌ true ๋๋ false๋ฅผ ๋ฆฌํดํ๊ฒ ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์๋ฐ๋ ๊ฐ์ฒด๊ฐ์ ๋น๊ต๋ฅผ ์ํ equals()๋ฅผ ์ ๊ณตํด ์ค๋ค.
equals() ๋ํ boolean type์ผ๋ก true์ false๋ฅผ retrunํ๋ค. ๊ฐ์ฒด๋ ๊ฐ๊ฐ์ ์ ํด์ง ๊ฐ์ด ์๋๋ผ ์ธ์คํด์ค์ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ง๊ณ ์๊ธฐ ๋๋ฌธ์ == ์ฐ์ฐ์๋ก๋ ๋น๊ต ํ ์๊ฐ ์๋ค. ํ์ง๋ง ๊ฐ์ฒด ๋ผ๋ฆฌ์ == ์ฐ์ฐ์ ์ธ์๋ equals()๋ฅผ ์ฌ์ฉ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ค.
B b1 = new B(1,"ํ๊ธธ๋");
B b2 = new B(1,"ํ๊ธธ๋");
//equals / ==์ ์๋ฏธ์ดํด
System.out.println("b1,b2๋ ๊ฐ์ ๊ฐ์ฒด ์ธ๊ฐ");
System.out.println("b1==b2() : "+ (b1==b2)); //false ๊ฐ์ฒด๊ฐ์ ๋น๊ต
System.out.println("b1,b2๋ ๊ฐ์ equalsํ ์ธ๊ฐ");
System.out.println("b1.equals(b2) : "+b1.equals(b2)); //false
System.out.println("========================");
//์ฐธ์กฐ๊ฐ์ ๊ฐ๊ฒํ์.
b1 = b2; // b1์ ์ฐธ์กฐ๊ฐ์ ๊ฐ์ด ๊ณต์ ํ๊ธฐ์ true
System.out.println("b1,b2๋ ๊ฐ์ ๊ฐ์ฒด ์ธ๊ฐ");
System.out.println("b1==b2() : "+ (b1==b2));
System.out.println("b1,b2๋ ๊ฐ์ equalsํ ์ธ๊ฐ");
System.out.println("b1.equals(b2) : "+b1.equals(b2));
์๋์ ๊ฐ์ด Object class์ equals()์ ๋งค๊ฐ๋ณ์ type์ผ๋ก Object๋ฅผ ๊ฐ์ง๋ค.
Object๋ ๋ชจ๋ Class์ ์์ ํด๋์ค๋ก ์กด์ฌํ๋ฉฐ ๋ชจ๋ Reference type์ ๊ฐ์ง ์ ์๋ค.
public boolean equals(Object obj) {
return (this == obj);
}
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์ฌ๊ธฐ์ ์ค๋ฅ๊ฐ ๋ฐ์ํ๊ฒ๋๋ค.
์ฌ๊ธฐ์ ๋น๊ตํ๋ b1์ Data type์ B์ด๋ค. B๋ Object๋ฅผ ์์๋ฐ๋ ํ์ํด๋์ค์ด๋ค.
ํ์ง๋ง b2๋ equals()์์ Object type๋ก ํ๋ณํ์ ํ์ฌ return์ด ๋๋ค.
Reference type์ primitive type์ ๋ฌ๋ฆฌ ํ๋ณํ์ ์ฐธ์กฐํ๋ ๋ฒ์๋ฅผ ๊ฑด๋ค๊ฒ๋๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ b1 ๊ณผ b2์ Data type๊ฐ ๋ค๋ฅด๊ณ ์ฐธ์กฐํ๋ ๋ฒ์๊ฐ ๋ค๋ฅด๊ธฐ์ false๊ฐ ๋์ค๊ฒ๋๋ค.
์ฌ๊ธฐ์ true๋ฅผ ๋ฐ์ ์ ์์ ์ผ๋ก ์คํํ๊ฒ ํ๋ ค๋ฉด Reference type์ ๋ช
์์ ํ๋ณํ์ ์ ์ฉํ์ฌ์ผ ํ๋ค.
public boolean equals(Object obj){
boolean equal = ( this.no == ( (B)obj ).no );
return equal;
}
equals()๋ฅผ overRidingํ์ฌ ์ฌ์ฉํ ๊ฒ ์ด๋ค. ์ด์ ๊ฐ์ด ํ๋ณํ์ ํตํ์ฌ ์ ์์ ์ผ๋ก ์คํ ํ ์ ์๋ค.
#java์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ java.lang.class๋ค ๋๋ถ๋ถ์ equals๋ฅผ ๋ฐ๋ก overRiding ํ์ง ์์๋
์ฌ์ฉ ํ ์ ์๋๋ก ๊ฐ Class์ ๋ง๋ equals()๋ก overRiding์ด ๋์ด ์๋ค.
instanceof
Reference ๋น๊ต์ฐ์ฐ์์๋ instanceof ์ฐ์ฐ์๊ฐ ์กด์ฌํ๋ค.
instanceof ์ฐ์ฐ์๋ ๊ฐ์ฒดํ์
์ ํ์ธํ๋๋ฐ ์ฌ์ฉํ๋ค.
ํ๋ณํ์ด ๊ฐ๋ฅํ์ง ํด๋น ์ฌ๋ถ๋ฅผ true / false๋ก ๊ฐ๋ฅด์ณ์ค๋ค.
์ฝ๊ฒ ๋งํด์ ์์๊ด๊ณ์ ๋ฐ๋ฅธ ํด๋์ค๋ฅผ ํ์ธํ๋๋ฐ ์ฌ์ฉํ๋ค.
์ฌ์ฉํ์์ผ๋ก๋ โ๊ฐ์ฒด + instanceof + ํด๋์คโ์ด๋ค
public class B extends A
A a = new A();
B b = new B();
// a instanceof A : true
// b instanceof A : true
// a instanceof B : false
// b instanceof B : true
์์ ๊ฐ์ด ์์๊ณผ ๋ถ๋ชจ์ ์์๋ค์ ๋ถ๋ชจ์ ๊ฐ์ฒด๊ฐ ๋ ์ ์๋ค.
ํ์ง๋ง ๋ถ๋ชจ์ ์์๊ฐ ์์์ ๊ฐ์ฒด๊ฐ ๋ ์๋ ์๋ค.
Leave a comment