-
[JAVA] 분명 같은데 왜 다르다는거야 !! "=="과 equals 차이얼렁뚱땅 자바이야기 2023. 2. 28. 15:11
사실 어제도 SWEA 문제 풀면서 겪었던 문제인데
(SWEA 푼 것도 블로그 올릴까 백번 고민했는데 백준과는 다르게 올린 사람이 적어서
진짜 너무 부끄러워서 못올리겠음 ㅠ)
"내가 잘못했겠지,, 내가 멍청이지 내 눈엔 똑같아 보이지만 개행문자라도 들어가있겠지"
라고 생각하며 다른 방식으로 문제를 풀었었다.
아래 test_1 이라는 String과 test_2라는 String을 출력하고 "=="을 이용해 같은지 보았다.
맨 마지막 보면 AAAA AAAA 인데도 False가 뜨는 진짜 어이없는 상황.
System.out.println(test_1 + " "+ test_2 + " "+(test_1==test_2) );
진짜 너무 황당해서 구글형님한테 이렇게 물어봤다
ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
찾아보니까
String a = "~";
String b = new String("~");
이 두개는 같아보이지만 다른 거라고 한다.
b의 경우 새롭게 객체를 만들어줘서 넣은 것이기 떄문에
주소값이 달라, 컴퓨터는 다르다고 인식을 하는 것이다.
나도 이거 코딩할 때, reverse()를 사용하기 위하여
StringBuffer에 넣어 새롭게 만들어줬기 때문에 다르다고 인식하는 듯하다.
그럼 어떻게 해야하나 ?!
바로 a.equals(b) 형태를 사용해주면 된다.
System.out.println(test_1 + " "+ test_2 + " "+test_1.equals(test_2) );
완전 기초 문법부터 잘 몰라서 서툰 자바이지만,
그래도 열심히 해서 프로 따보자고 ,,,, 🥲
'얼렁뚱땅 자바이야기' 카테고리의 다른 글
[JAVA] Stack 사용하기 (0) 2023.03.03 [JAVA] String을 뒤집는 법 (0) 2023.02.28 [JAVA] bit 연산을 활용한 부분집합 만들기 (0) 2023.02.27 [JAVA] BufferedReader, BufferedWriter 연습하기 (0) 2023.02.27 [JAVA] 자료형 크기 (0) 2023.02.27