Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
String Pool та метод Equals() | String
Основи Java
course content

Зміст курсу

Основи Java

Основи Java

1. Початок Роботи
2. Основні Типи та Операції
3. Цикли
4. Масиви
5. String

bookString Pool та метод Equals()

Метод equals()

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

java

Main

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? Це область в heap пам'яті, яка виділяється при створенні рядкових об'єктів. Якщо ми створимо об'єкт String зі значенням "string", а потім створимо інший об'єкт String з таким же значенням, то обидва об'єкти будуть посилатися на один і той же об'єкт в пам'яті, який знаходиться в String Pool.

Так чому ж у нашому випадку ми отримали "false"? Тому що ми обійшли пул рядків, створивши об'єкти з допомогою синтаксису String first = new String("string");. Коли ми створимо об'єкт типу String з використанням іншого синтаксису, наприклад, String first = "string";, він буде поміщений у пул рядків.

Розглянемо приклад коду:

java

Main

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 замість ==.

java

Main

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

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

Зауважте

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

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

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

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

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