== 는 선언된 변수가 참조하는 메모리 주소를 비교함
equals()는 선언된 변수의 값을 비교함
예시)
<%@ page language="java" contentType="text/html; charset=EUC-KR"
pageEncoding="EUC-KR"%>
<%
String testVal = "test";
String testVal2 = "test";
String testVal3 = new String("test");
boolean a = false;
boolean b = false;
boolean c = false;
boolean d = false;
if(testVal == testVal2) a = true;
if(testVal == testVal3) b = true;
if(testVal.equals(testVal2)) c = true;
if(testVal.equals(testVal3)) d = true;
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>Insert title here</title>
</head>
<body>
출력<br/>
String testVal : <%=testVal %><br/>
String testVal2 : <%=testVal2 %><br/>
String testVal3 = new String("test") : <%=testVal3 %><br/><br/>
비교<br/>
if(testVal == testVal2) : <%=a %><br/>
if(testVal == testVal3) : <%=b %><br/>
if(testVal.equals(testVal2)) : <%=c %><br/>
if(testVal.equals(testVal3)) : <%=d %>
</body>
</html>
실행해보면 true, false, true, true 순으로 결과 나올것이다.
java에서는 선언된 변수의 값이 같으면 같은 메모리를 참조하기 때문에 == 를 사용해서 비교를 하면 true가 나오지만
new String()을 통해서 생성된 변수는 값이 같아도 새로 생성된 메모리 주소를 참조하기 때문에 == 를 사용해서 비교하면
false가 나오는것입니다.
참조하는 메모리 주소가 달라도 값 자체를 비교하는 equals()는 전부 true가 나옵니다.
간단하지만 쉽게 잊을만한 내용입니다.
수고하세요.
[출처] [java] string(문자열) 비교 ==, equals 의 차이|작성자 후후후
'Develop > JAVA & Spring' 카테고리의 다른 글
Java Decompiler (0) | 2016.11.21 |
---|---|
request 내용 확인 (0) | 2016.11.08 |
올바른 equals() 사용법 (0) | 2016.10.26 |
JSP/Servlet에서 사용하는 Request 객체의 메소드 (0) | 2016.10.26 |
Java - Null Check 및 String 비교 (0) | 2016.10.24 |