JJUNNAK's
[ Java ] String 간의 비교연산 결과 무조건 False로 나오는 경우. 본문
문제
Java 메소드 개발중 파라미터로 String 값을 받아 내가 원하는 문자열과 비교연산을 할 때 결과가 무조건
False로 나오는 현상이 있었다.
// 문제상황 예시
public 메소드(String 파라미터값){
String result = null;
if(파라미터값 == "A"){ // False
result = "A"
}
System.out.println(result);
}
// 파라미터로 A를 전달해도 null값이 출력됨!
위와 같이 다른 클래스에서 메소드를 호출하여 String 변수에 담긴 "A"를 넘겨도 결과값은 null이 출력된다.
해결방법
String 클래스의 .equals() 함수를 사용하면 된다.
== 비교연산자는 문자열을 비교할 때 메모리 주소를 비교한다.
때문에 파라미터로 넘긴 변수의 메모리 주소와 메소드 안에서 잡힌 파라미터객체의 메모리 주소가 달라서
False가 출력된 것으로 보인다. (혹은 변수==변수 가 아닌 변수=="문자열값"으로 비교해서 그런 것일 수도)
String 클래스의 .equals 함수는 문자열의 주소가 아닌 값을 기준으로 비교하기 때문에 원하는 결과값을 얻을 수가 있었다.
// String.equals()를 적용한 코드
public 메소드(String 파라미터값){
String result = null;
if(파라미터값.equals("A")){
result = "A"
}
System.out.println(result);
}
[ 참고 글 ]
https://developer-talk.tistory.com/402
[Java]문자열 비교하는 방법
이번 포스팅은 Java에서 문자열을 비교하는 방법을 소개합니다. == 연산자 == 연산자는 int, float, double와 같은 기본 타입을 비교하기 위해 사용하는 연산자입니다. 다음은 == 연산자를 사용하여 Strin
developer-talk.tistory.com
'TroubleShooting' 카테고리의 다른 글
[ Eclips / Tomcat ] Java 코드 수정 반영 안되는 현상 (0) | 2023.01.04 |
---|---|
[ Base64 ] 이미지 atob() btoa() 깨지는 문제 (0) | 2023.01.04 |
Comments