JJUNNAK's

[ Java ] String 간의 비교연산 결과 무조건 False로 나오는 경우. 본문

TroubleShooting

[ Java ] String 간의 비교연산 결과 무조건 False로 나오는 경우.

최낙준 2023. 1. 6. 01:53
문제

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

 

Comments