Назад Зміст Вперед

Лабораторна робота: Використання операції “ = = ” та методу equals( ) для порівняння Strings, StringBuilder, Wrappers

Порівняння StringBuilder за значенням

Усередині класу String метод equals перевизначений, тому можна порівнювати рядки за значенням за допомогою equals, а в класі StringBuilder немає. Тому, за значенням перевіряють так:

1
2
3
4
5
StringBuilder sb = new StringBuilder();
sb.append("test");     
StringBuilder sb2 = new StringBuilder();
sb2.append("test");
System.out.println(sb.toString().equals(sb2.toString()));

Тобто призводять StringBuilder до рядка (метод toString) і викликають метод equals.

Спершу ще раз торкнемося теми посилань. Розберемо простий приклад порівняння двох масивів:
int[] a = { 12 };int[] b = { 12 };println("a==b is " + (a == b))// порівнює ссилкиprintln("a.equals(b) is " + a.equals(b))// порівнює ссилки

Хоча вміст масивів a і b один, але якщо ми просто порівняємо a == b, то результатом буде false, оскільки в даному випадку відбудеться порівняння посилань, які будуть різними, тому що вказують на різні об'єкти. Метод equals існує для багатьох класів Java і як правило він порівнює вміст цих об'єктів, але для масивів він чомусь теж порівнює посилання.

Для порівняння одновимірних масивів існує метод Arrays.equals, який порівнює вміст масивів. Для порівняння багатовимірних масивів є метод Arrays.deepEquals.

Метод
Arrays.equals(ab)
в результаті порівняння масивів а й b видає true.
A00023

Дана програма може генерувати наступний висновок:
A00024

Розглянемо ще одну просту програму c varargs
A00029

У рядку 9 відбувається виклик методу varArgs, без аргументу змінної довжини, тобто він відсутній.

У рядку 10 у varargs переданий один аргумент, а в рядку 12 три.

Так само, як бачите, як аргумент varargs можна передавати і одновимірний масив (рядок 15).

У varargs можна передати і багатовимірний масив, але з нього буде взято тільки перший вимір - перший індекс.

Дана програма генерує наступний висновок:
A00030
https://habrahabr.ru/post/260767/

.