JAVA
[JAVA] StringBuffer로 equals 쓰기 오류
은전
2023. 6. 8. 21:52
팰린드롬 문제를 풀다가 StringBuffer에서 reverse라는 메소드를 쓸 수 있어서 이 메소드로 풀어보았습니다.
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str.trim();
StringBuffer s = new StringBuffer(str);
StringBuffer r = new StringBuffer(str);
r.reverse();
int flag = 0;
if(s.equals(r)) flag = 1;
System.out.print(flag);
sc.close();
}
분명 출력으로 확인했을 땐 값이 같았는데 자꾸 flag가 0이 나왔습니다.
StringBuffer
StringBuffer에는 equals 메소드를 상속하지 않습니다.
equals를 사용해도 == 연산자를 사용한 것과 같은 결과가 나오게 됩니다.
따라서 toString으로 String화 해주고 equals를 사용하여 문제를 해결했습니다.
* equals는 내용을 비교한 것이고, == 연산자는 객체 자체를 비교한 것이다.
public static void main(String[] args){
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str.trim();
StringBuffer s = new StringBuffer(str);
StringBuffer r = new StringBuffer(str);
r.reverse();
int flag = 0;
String str1 = s.toString();
String str2 = r.toString();
if(str1.equals(str2)) flag = 1;
System.out.print(flag);
sc.close();
}

