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