Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Вивчайте Пул Рядків, Метод Equals() | Секція
Основи Java

bookПул Рядків, Метод Equals()

Свайпніть щоб показати меню

Метод equals()

Цей метод використовується для порівняння об'єктів і часто застосовується з об'єктами String. Розглянемо приклад створення двох однакових змінних типу string і порівняння їх за допомогою ==:

Main.java

Main.java

copy
123456789
package com.example; public class Main { public static void main(String[] args) { String first = new String("string"); String second = new String("string"); System.out.println(first == second); } }

Результат — false, оскільки == порівнює посилання на об'єкти, а не їх фактичні значення. Хоча обидва рядки містять "string", це різні об'єкти в пам'яті, створені поза String pool.

String pool

String pool — це частина heap-пам'яті, де зберігаються літерали рядків. Якщо створювати рядки з однаковим значенням за допомогою літералів, вони посилаються на один і той самий об'єкт у пам'яті.

Чому ж ми отримали false? Тому що ми обійшли string pool, використовуючи new String("string"), що створює новий об'єкт у пам'яті. При використанні String first = "string"; рядок розміщується у string pool і може бути спільно використаний.

Розглянемо приклад коду:

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first == second)); System.out.println("Result of comparing first and third: " + (first == third)); } }

Розгляньмо схему, яка пояснює, як це працює та які об'єкти знаходяться у String Pool.

Як порівнювати значення рядків у String Pool та поза ним? Для цього Java надає метод equals, який порівнює значення об'єктів типу String, а не їх посилання. Розгляньмо приклад коду, де рядки порівнюються за допомогою методу equals, а не оператора ==.

Main.java

Main.java

copy
1234567891011
package com.example; public class Main { public static void main(String[] args) { String first = "string"; String second = "string"; String third = new String("string"); System.out.println("Result of comparing first and second: " + (first.equals(second))); System.out.println("Result of comparing first and third: " + (first.equals(third))); } }

Тепер видно, що порівняння відбувається коректно.

Все було зрозуміло?

Як ми можемо покращити це?

Дякуємо за ваш відгук!

Секція 1. Розділ 35

Запитати АІ

expand

Запитати АІ

ChatGPT

Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат

Секція 1. Розділ 35
some-alt