Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- mapstruct
- Git #회고록
- 롤중독
- 인터넷 #ISP
- 몰입학습 #몰입
- 코딩테스트
- 백엔드로드맵
- 정리글 작성법
- 글 foramt
- 회고
- 회고 #주간회고
- 코드스테이츠 #회고록
- 피드백
- 공부방식
- WSL2 #권한
- 시작 #꾸준히 #과하지않게
- JAVA기본
- 사용자계정 #WSL2
- 회고록
- 호스트주소 #Host주소
- git #intellij
- 코드스테이츠 #
- 회고록_코드스테이츠
- OOP
- String
- 에러해결
- Java환경
- WSL #Linux #ubuntu
- 네트워크 기초
- jvm
Archives
- Today
- Total
느리더라도 꾸준히
[String]equal(), compareTo(), == 비교하기 본문
목표
문자열을 비교하는데 자주 사용되는 equal(), compareTo(), == 의 차이를 이해한다.
본문
1. compareTo()
두문자를 사전순으로 비교하고, 차이값 만큼 int로 return하는 method
비교순서 : 1. 문자비교, 2. 길이비교
로직
- 비교되는 두 문자열중 짧은 길이의 문자열만큼 반복한다.
- 문자를 순차적으로 비교하다가 두 문자가 다른 경우를 만났을때 기준문자열 기준으로 그 차이값을 반환.(문자비교)
- 순차적으로 비교했으나 계속 문자가 같았다면, 기준문자열과 argument속 문자열의 길이의 차이값을 반환.(길이비교)
public class Main {
public static void main(String[] args) {
String str1 = "ABC";
String str2 = "FGH";
String str3 = "ABCDE";
String str4 = "ABC";
System.out.println("result: " + str1.compareTo(str2));
System.out.println("result: " + str1.compareTo(str3));
System.out.println("result: " + str1.compareTo(str4));
}
}
결과
result: -5 // A B C D E F
result: -2 // 길이 차이
result: 0 // 동등함
- NULL값을 비교할시, "NullPointerException" 예외가 발생한다.
- 기준 문자열이 비교문자열에 비해 (값만큼) 사전순/길이가 작다/크다 로 이해하면 쉽다.
2. equal()
두 객체의 값의 동일성 여부를 판단한다.
- 객체가 저장된 메모리속에 존재하는 값의 동일성을 반환한다.
3. ==
두 객체의 동일성 여부를 반환(true or false 반환)
- 객체가 저장된 메모리를 나타내는 주소값의 동일성 여부를 반환한다.
String name1 = "Kim Coding";
String name2 = "Kim Coding";
String name3 = new String("Kim Coding");
String name4 = new String("Kim Coding");
boolean comparison1 = name1 == "Kim Coding"; // true
boolean comparison2 = name1 == name2; // true
boolean comparison3 = name1 == name3; // false
boolean comparison4 = name3 == name4; // false
boolean comparison5 = name1.equals("Kim Coding"); // true
boolean comparison6 = name1.equals(name3); // true
boolean comparison7 = name3.equals(name4); // true
comparison2의 이유는 String선언방식을 참고하자.
name3 과 name4는 같은 값을 가지고 있지만, 다른 참조변수를 가진 두개의 객체이다. 이 둘을 비교하는 comparison4와 comparison7을 유심히 살펴보자.
- comparison4 : 주소값을 비교하고 있으므로 false가 나온다.
- comparison7 : 메모리에 존재하는 실제 값을 비교하고 있으므로, true가 나온다.
출처
'Java' 카테고리의 다른 글
[Java기본]while문속의 switch문과 break; (0) | 2022.11.03 |
---|---|
[배열]배열 복사 메서드 비교하기 (0) | 2022.11.03 |
[String]String 선언 방식 비교 (0) | 2022.10.31 |
[Java환경]IntelliJ JDK 환경 변경하기 (0) | 2022.10.21 |
[Java환경]환경변수란? (0) | 2022.02.07 |
Comments