Пул Рядків, Метод Equals()
Свайпніть щоб показати меню
Метод equals()
Цей метод використовується для порівняння об'єктів і часто застосовується з об'єктами String. Розглянемо приклад створення двох однакових змінних типу string і порівняння їх за допомогою ==:
Main.java
123456789package 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
1234567891011package 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
1234567891011package 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))); } }
Тепер видно, що порівняння відбувається коректно.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат