카테고리 없음

Java 비교 == equals // == false vs !

roomname-dev 2023. 1. 4.
728x90

⭐개발을 진행 하다 습관적으로 == 비교 연산자와 equals를 사용하게 된다. 정확한 비교를 하지 않아도 되니 ==를 통해 비교를 했었는데 정확히 알아볼 필요 가있어 찾아보았다. 

 

🍭형태 

1. == : 비교를 위한 연산자 

2. equals() 메소드 : 객체끼리 내용 비교 

 

🍭비교 방식 

1. ==  : 비교하는 대상의 주소값 비교 

2. equals() 메소드 : 비교하고자 하는 대상의 내용 자체 비교 

 

String aValue = "aVal";
String bValue = aValue;
String cValue = new String("aVal");

aValue와 bValue는 같은 값을 가지고 할당을 하였기 때문에 같은 값의 주소를 명시한다. 

cValue는 새로 할당을 하였기 때문에 새로운 주소값에 값을 할당 받는다. 

 

이렇게 선언된 값을 통해 == 과 equals()메소드를 통해 비교를 해보자

System.out.println("eauls비교");
System.out.println("1번" + aValue.equals(bValue));
System.out.println("2번" + aValue == bValue);
System.out.println("3번" + aValue == cValue);
System.out.println("4번" + aValue.equals(cValue));
1번 true  / 1번은 aValue와 bValue가 가지고 있는 내용을 비교 
2번 true  / 2번은 aValue와 bValue가 가지고 있는 주소값을 비교 
3번 false / 3번은 aValue와 cValue가 가지고 있는 주소값을 비교 
4번 true  / 4번은 aValue와 cValue가 가지고 있는 내용을 비교 
5번 true  / 5번은 bValue와 cValue가 가지고 있는 내용을 비교 
 

🤠결론 

주소값을 비교하고 싶다면 == 값을 비교하고 싶다면 equals() 메소드 사용 

 

 

⭐ == false vs ! 

조건절에 블리언(boolean)변수통해 true false 및 ! 통해 사용을 하게 된다. 

if( !블리언 변수 )  vs if( 블리언 변수 == false ) 

! vs == false 이렇게 입맛대로 사용을 하고 있었으나 여러 글을 참고 하다 보니 알게된 내용을 정리해본다. 

참고 글 : Using if (!bool) vs if (bool == false) in C# 

참고 글 : Is it bad to explicitly compare against boolean constants e.g. if (b == false) in Java?

 

요약내용
1. 속도측정을 하면 !로 사용하는것이 조금 더 빠르다. ( 단! 컴파일러에 따라 최적화가 될수 있다고함)
2. 통상적으로 개발자들은 !를 더 선호함 But == false가 가독성이 좋다고 하는 사람도 있음 
3. Null이 들어갈 수 있는 경우 == false가 유용함 ( c# Nullbale)

 

🤠결론 

== false랑 ! 모두 사용 가능하지만 트랜드를 반영 하여 !를 사용하는것이 좋을것 같음 

 

728x90

댓글