Java 개발자가 되고 싶은 비공자

자바(Java)의 equals( 문자열 비교 ) 문자열에 대해 자세히 공부[4]

차세대 IT 리더 비공자 2024. 1. 17. 07:30

 
 
안녕하세요, 차세대 IT리더가 되고픈 비공자입니다.
 
오늘은 여러분께서 잘 알고 계시고 실제로도
Java로 코드를 구현하다 보면 많이 사용하는
문자열의 비교를 공부해보려고 합니다.
 
문자열의 비교의 대표적인 메서드는 equals()라는
메서드가 있습니다. 두 개의 문자열을 서로 데이터의
생성, 길이, 값, 대소문자를 서로 비교합니다.
그리고 추가적으로 equals()의 형제 격인
equalsIgnorecase()도 배워보겠습니다.
 
 
그럼 오늘도 열심히 같이 공부해 보겠습니다.
 
 
[ 오늘의 목차 ]
1. 제일 강력한 비교!! 등위 연산자 사용해 비교해보기
2. equals()를 사용해 비교해보기
3. equalsIgnorecase()를 사용해 비교해 보기
    ( 완전 느슨한 문자열 비교 )

 
 
 
[ 1. 제일 강력한 비교!! 등위 연산자 사용해 비교해 보기 ]

가장 강력한 비교! 등위 연산자를 사용해 비교 해보기

위의 코드와 결과를 보시면 
문자열을 비교했을 경우
str_1과 str_2의 비교값 true로 반환하고
나머지는 전부 false를 반환하는 결과를 볼 수 있는데
 
여기서 수많은 비교가 일어나는 걸 알고 계시나요?
 
등위 연산자는 경우의 수가 무려 4번의 비교합니다.
1. 데이터의 생성( 변수 / 객체[참조형] ) 비교
2. 데이터의 길이 비교
3. 데이터의 값 비교
4. 문자열의 대소문자 비교
 
[ 첫 번째 결과 ]
str_1과 str_2의 경우는 모든 조건에 다 만족하여
str_1  : I want to do Developer
str_2 : I want to do Developer
true를 반환하는 걸 볼 수 있습니다.
 
[ 두 번째 결과 ]
str_1과 str_3의 경우는 위의 해당 조건에 2,3,4는
같지만, 1번 데이터의 생성이 달라서
str_1  : I want to do Developer
str_3 : I want to do Developer
false를 반환하는걸 볼 수 있습니다.
 
[ 세 번째 결과 ]
str_1과 str_5의 경우는 위의 해당 조건에 1번만 같고
나머지 2,3,4의 경우는 전부 만족하지 못해서
str_1  : I want to do Developer
str_5 : I have to Coding
false를 반환하는걸 볼 수 있습니다.
 
[ 네 번째의 결과 ]
str_1과 str_4의 경우는 위의 해당 조건에
아무것도 만족하지 못하기 때문에
str_1  : I want to do Developer
str_4 : I have to Coding
false를 반환하는걸 볼 수 있습니다.
 
[ 다 섯번째의 결과 ]
str_5와 str_6의 경우는 1, 2, 4번은
같지만, 3번 데이터의 값이 다르기 때문에
str_5 : I have to Coding
str_6 : i have to coding
false를 반환하는 걸 볼 수 있습니다.
 
이 처럼 등위 연산자 비교는 문자열
데이터 비교에서가장 엄격한 비교를 하는
비교 방식이라고 생각하면좋을 것 같습니다.
 
 
[ 2. equals()를 사용해 비교해보기 ]

위의 코드와 결과를 보시면
문자열을 비교했을 경우
str_1과 str_2의 비교값 true로 반환하고
str_1과 str_3의 비교값 true로 반환합니다. 
 
equals()를 사용했을 때는 아래의 조건 중 하나가
빠지면서 등위 연산자 비교보다는 조금 더 자유로운
비교를 할 수 있습니다.
 
equals()의 경우의 수가 3번의 비교합니다.
// 1. 데이터의 생성( 변수 / 객체[참조형] ) 비교 
2. 데이터의 길이 비교
3. 데이터의 값 비교
4. 문자열의 대소문자 비교
 
[ 첫 번째 결과 ]
str_1과 str_2의 경우는
모든 조건을 충족하기 때문에
str_1  : I want to do Developer
str_2 : I want to do Developer
true를 반환하는 걸 볼 수 있습니다.
 
[ 두 번째 결과 ]
str_1과 str_3의 경우 데이터의 생성이 다르지만,
equals()를 사용해 비교하면 해당 조건은 없어지면서
[ 데이터의 길이, 값, 대소문자 ] 비교만 하기 때문에 
3개의 모든 조건은 충족을 하므로

str_1  : I want to do Developer
str_3 : I want to do Developer
true를 반환합니다.
 
[ 세 번째 결과 ]
str_1과 str_5의 경우 equals()로 비교를 해서
데이터의 생성 조건은 없어졌지만,
데이터 생성만 같고 남은 조건은 충족하지 못해서
str_1  : I want to do Developer
str_5 : I have to Coding
false를 반환합니다.
 
[ 네 번째의 결과 ]
str_1과 str_4의 경우 equals()의 조건을
모두 충족하지 못하기 때문에
str_1  : I want to do Developer
str_4 : I have to Coding
false를 반환합니다.
 
[ 다 섯번째의 결과 ]
str_5와 str_6의 경우 equals()의 조건
2번과 4번은 해당하지만, 3번이 충족을 하지 못해서
str_5 : I have to Coding
str_6 : i have to coding
false를 반환합니다.
 
 
[ 3. equalsIgnorecase()를 사용해 비교해 보기 ]

위의 코드를 보시면
문자열을 비교했을 경우
str_1과 str_2의 비교값 true로 반환하고 
str_1과 str_3의 비교값 true로 반환합니다. 
str_5와 str_6의 비교값 true로 반환 합니다.
 
equalsIgnoreCase()를 사용했을 때는 아래의
조건 중 두 개가 빠지면서 equals() 비교보다는
완전 느슨한 문자열을 비교를 할 수 있습니다.
 
equalsIgnoreCase()의 경우
// 1. 데이터 생성( 변수 / 객체[참조형] )이 같은지
2. 데이터의 길이가 같은지
3. 데이터의 값이 같은지
// 4. 문자열의 대소문자가 같은지
 
[ 첫 번째 결과 ]
str_1과 str_2의 경우는 당연히
모든 조건을 충족하기 때문에
str_1  : I want to do Developer
str_2 : I want to do Developer
true를 반환하는 걸 볼 수 있습니다.
 
[ 두 번째 결과 ]
str_1과 str_3의 경우 데이터의 생성이 다르지만,
equalsIgnoreCase() 메서드도 equals()와 동일하게
데이터 생성 조건은 없어지기 때문에
str_1  : I want to do Developer
str_3 : I want to do Developer
true를 반환하는 모습을 볼 수 있습니다.
 
[ 세 번째 결과 ]
str_1과 str_5의 경우 equals()로 비교를 해서
데이터의 생성 조건은 없어졌고,
문자열의 대소문자가 조건도 없어졌지만
문자열의 기본인 값이 다르기 때문에
당연히 아무리 느슨한 비교라 할지라도
str_1  : I want to do Developer
str_5 : I have to Coding
false를 반환하는 모습을 볼 수 있습니다.
 
[ 네 번째의 결과 ]
str_1과 str_4의 경우도 세 번째 결과와
동일하게 equalsIgnoreCase() 메서드를
사용해도 데이터의 생성
데이터 대소문자의 조건이 사라진다 해도
데이터의 값이 다르면 당연히
str_1  : I want to do Developer
str_4 : I have to Coding
false를 반환합니다.
 
[ 다 섯번째의 결과 ]
str_5와 str_6의 경우
equalsIgnoreCase() 메서드의 조건 중
가장 잘 활용된 문자열 비교를 조건에서
충족하기 때문에 문자열의 값이 소대문자로
다르더라도 데이터의 생성이 다르더라도
길이와 데이터의 값이 같으면
str_5 : I have to Coding
str_6 : i have to coding
true를 반환하는 모습을 볼 수 있습니다.
 
 
오늘은 문자열의 대중적인 문자열 비교 방법
등위연산자 비교, equals() 메서드 비교,
equalsIgnoreCase() 메서드 비교를 해보았지만
한번 더 복습한다는 마음으로
 

[ 마지막 정리 요약 ] 
등위 연산자는 경우의 수가 무려 4번의 비교합니다.
1. 데이터의 생성( 변수 / 객체[참조형] ) 비교
2. 데이터의 길이 비교
3. 데이터의 값 비교
4. 문자열의 대소문자 비교
 
equals()의 경우의 수가 3번의 비교합니다.
// 1. 데이터의 생성( 변수 / 객체[참조형] ) 비교
2. 데이터의 길이 비교
3. 데이터의 값 비교
4. 문자열의 대소문자 비교
 
equalsIgnoreCase()의 경우 
// 1. 데이터의 생성( 변수 / 객체[참조형] ) 비교
2. 데이터의 길이 비교
3. 데이터의 값 비교
// 4. 문자열의 대소문자 비교
 
 
오늘도 저의 포스팅을 봐주셔서 감사합니다.