Метод с параметрами StringBuilder
Есть задача, в которой надо создать метод и во вход параметра вписать два объекта класса StringBuilder. Сам метод проверяет на равенство вписанных объектов.
Саму задачу я решил первым способом, второй шел из урока. Но я никак не могу понять, почему мне надо создавать новые объекты, что бы их сопоставить на равенство?
Я уже пол дня ищу информацию и перечитываю про сам StringBuilder, но так и не могу прийти к ответу, так как со String, я вписываю на прямую (пример в третьем методе).
package Lesson_17;
public class Homework {
public static boolean equalityTest(StringBuilder s1, StringBuilder s2) { // first method
boolean temp;
String st1 = new String(s1);
String st2 = new String(s2);
if(st1.equals(st2)) {
temp = true;
System.out.println("true");
} else {
temp = false;
System.out.println("false");
}
return temp;
}
public static boolean equalityTest2(StringBuilder s1, StringBuilder s2) { // second method
boolean result = true;
if(s1.length() == s2.length()) {
for(int i = 0; i < s1.length(); i++) {
if(s1.charAt(i) != s2.charAt(i)) {
result = false;
break;
}
}
} else {
result = false;
}
return result;
}
public static boolean equalityTest3(String s1, String s2) { // check method
boolean temp;
if(s1.equals(s2)) {
temp = true;
System.out.println("true");
} else {
temp = false;
System.out.println("false");
}
return temp;
}
public static void main(String[] args) {
StringBuilder sb1 = new StringBuilder("Test_01");
StringBuilder sb2 = new StringBuilder("Test_01");
StringBuilder sb3 = new StringBuilder("test_01");
// Test 1 - first method
Homework.equalityTest("Test1", "Test1"); // not using a new object ?
Homework.equalityTest(sb1, sb3);
// Test 2 - second method
boolean check1 = Homework.equalityTest2(sb1, sb2);
boolean check2 = Homework.equalityTest2(sb1, sb3);
System.out.println(check1);
System.out.println(check2);
// Test 3 - check method
Homework.equalityTest3("Test1", "Test1");
}
}
Ответы (1 шт):
Класс StringBuilder не переопределяет метод equals класса Object. То есть StringBuilder не знает о том, как ему правильно проверяться на равенство, и использует стандартный метод equals из класса Object. Поэтому нужно создавать строки, которые переопределяют метод equals, чтобы произвести сравнение.