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

Пул Рядків та Метод equals()

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

Метод equals()

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

Main.java

Main.java

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

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

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))); } }

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

Note
Примітка

Використання методу equals() замість == при роботі з String.

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

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

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

Секція 5. Розділ 7

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Пул Рядків та Метод equals()

Метод equals()

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

Main.java

Main.java

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

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

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))); } }

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

Note
Примітка

Використання методу equals() замість == при роботі з String.

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

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

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

Секція 5. Розділ 7
some-alt