진짜 개발자
본문 바로가기

Language/Java

Java - equals 과 == 차이

728x90


1. equals 는 객체가 가진 내용이 같은지 다른지를 비교하는 메소드이다



2. "=="  는 객체의 메모리 주소를 비교한다




 ex )  String a = "a";

         String b = "a";

      

          if (a.equals(b))

              system.out.println("같다")

  

    => 같다

          

         if (a == b)

              system.out.println("같다")


    => 같다


   

 *  "==" 은 메모리의 주소를 비교한다고 했는데 왜 같다 라는 결론이 나왔을까


   Java 에서 Jvm에 메모리 할당시 String a = "a"; 와 같은 방식으로 할당할 경우

   상수풀이란 곳에 "a" 값이 저장되게 되고 a가 그 주소를 가리키게된다

   이때 String b = "a"; 를 실행 할 경우 상수풀에 이미 "a"란 값이 있으므로

    b에 새로운 주소가 지정되는 것이 아니라 상수풀에 있는 "a" 란값의 주소를 가리키게된다

   따라서 a와 b는 같은 주소를 가리키게되고 a == b 가 같다는 결론이 난다.