-
Java 문자열 비교 equals() + == 과의 차이점JAVA/JAVA 문법 2024. 1. 6. 15:39
자바 문자열 비교 equals() 메소드는 객체끼리의 내용 비교 .
비교를 위한 연산자 == 은 주소의 값을 비교
public class Main { public static void main(String[] args) { String str1 = "abc"; String str2 = str1; String str3 = new String("abc"); // == 연산자는 주소를 비교합니다. System.out.println(str1 == str2); // true // str2 에 st1 값을 넣었으므로 주소를 같이 공유합니다. System.out.println(str1 == str3); // false // str1 과 str3는 각각 생성 되었으므로 주소가 다릅니다. // equals() 는 내용을 비교합니다. System.out.println(str1.equals(str2)); // ture System.out.println(str1.equals(str3)); // true // 내용을 비교하기떄문에 abc 내용이 같으므로 true 가 반환됩니다. } }
str1 == str2
-> 같은 주소를 사용하고 있기 때문에 true
str1 == str3
-> str3에 new String으로 새로운 주소를 부여해 주소비교로 인한 false
str1.equals(str2)
-> 내용 비교라 내용이 같아서 true
str1.equals(str3)
-> 내용 비교라 같아서 true
equals()로 null 체크
public class Main { public static void main(String[] args) { String a = "2"; String b = ""; if (!"".equals(a)){ System.out.println("공백이 아닙니다."); } if ("".equals(b)){ System.out.println("공백입니다."); } } }
* 프로그래머스 0단계 [PCCE 기출문제] 3번 / 나이 계산
import java.util.Scanner; public class Solution { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int year = sc.nextInt(); String age_type = sc.next(); int answer = 0; if (age_type.equals("Korea")) { answer = 2030-year+1; } else if (age_type.equals("Year")) { answer = 2030-year; } System.out.println(answer); } }
Python에서는 ==를 사용하여 문자열의 값을 비교
is를 사용하여 두 객체의 메모리 주소 비교 (Java의 equals()와 비슷)
-> 헷갈린다 ,,, ㅠ
'JAVA > JAVA 문법' 카테고리의 다른 글
Java | startsWith(),endsWitn() 문자열이 특정 문자열로 시작, 끝나는가? (0) 2024.01.06 Join() 메서드를 활용해 문자열 리스트를 문자열로 변환 (1) 2024.01.06