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

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

Метод equals()

Цей метод використовується для порівняння об'єктів і часто застосовується з об'єктами 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))); } }

Тепер ми бачимо, що маємо правильне порівняння.

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

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

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

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

Запитати АІ

expand

Запитати АІ

ChatGPT

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

Suggested prompts:

Can you explain more about the difference between the string pool and heap memory?

Why does using `new String("text")` create a different object than using string literals?

Can you show an example where using `==` works as expected with strings?

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

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

Метод equals()

Цей метод використовується для порівняння об'єктів і часто застосовується з об'єктами 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))); } }

Тепер ми бачимо, що маємо правильне порівняння.

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

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

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

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