Пул Рядків, Метод Equals()
Метод 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-пам'яті, яка виділяється під час створення об'єктів рядка. Якщо ми створюємо об'єкт String зі значенням "string", а потім створюємо ще один об'єкт String з таким самим значенням, обидва об'єкти будуть посилатися на один і той самий об'єкт у пам'яті, який розташований у string pool.
Чому ж у нашому випадку ми отримали "false"? Це сталося тому, що ми обійшли string pool, створивши об'єкти за допомогою синтаксису String first = new String("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))); } }
Тепер ми можемо побачити, що маємо правильне порівняння.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат
Awesome!
Completion rate improved to 2.7
Пул Рядків, Метод Equals()
Свайпніть щоб показати меню
Метод 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-пам'яті, яка виділяється під час створення об'єктів рядка. Якщо ми створюємо об'єкт String зі значенням "string", а потім створюємо ще один об'єкт String з таким самим значенням, обидва об'єкти будуть посилатися на один і той самий об'єкт у пам'яті, який розташований у string pool.
Чому ж у нашому випадку ми отримали "false"? Це сталося тому, що ми обійшли string pool, створивши об'єкти за допомогою синтаксису String first = new String("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))); } }
Тепер ми можемо побачити, що маємо правильне порівняння.
Дякуємо за ваш відгук!