java공부
java/자바 equals 사용하여 동등성 비교
이쟤키
2021. 8. 15. 13:45
반응형
equals는 동등성을 비교한다.
즉,
String[] s = new String[1];
s[0] = "hi";
System.out.println(s.equals("hi"); // true
이런식으로 나올 것이다.
하지만 true라고 주소값이 같은 것은 아니다.
대신 HashCode는 같다.
String s = "hi";
String s2 = "hi";
String s3 = new String("hi");
System.out.println(s == s2); // true
System.out.println(s == s3); // false
System.out.println(s.equals(s3)); // true
// hash값 동일
System.out.println(s.hashCode() == s3.hashCode()); // true
객체 배열을 비교하면
public void test1() {
// Set을 이용해서 Hi객체를 출력
Set<Hi> hi = new HashSet<>();
// Hi객체에 ("hi", 10)을 입력
hi.add(new Hi("hi", 10));
// Iterator를 이용해서 출력
Iterator<Hi> iter = hi.iterator();
while(iter.hasNext()) {
// hi를 String s에 받음
String s = iter.next().getHello();
// equals를 통해 비교
System.out.println(s.equals("hi")); // true
}
}
이런식으로 나올 것이다.
equals를 이용한 프로그램 종료 상황을 만들자면
public void test1() {
Scanner sc = new Scanner(System.in);
String[] s = new String[1];
while(true) {
System.out.print("insert hi : ");
s[0] = sc.next();
// exit를 입력하면 종료하도록
if(s[0].equals("exit")) {
System.out.println("종료");
return;
}
}
이런식으로 사용 할 수 있다.
만약 if문에서 equals대신에 ==을 이용한 비교를 한다면
영원히 반복문을 빠져나오지 못 할 것이다.