Тест пула строк Java не работает

1

Прочитав о Java String Pool, я решил провести небольшой тест. Я написал следующую тестовую программу, которая не соответствует поведению Java String Pool в соответствии со спецификацией JDK.

public class Temp_20141220 {

    private String b1 = "hello";

    public static void main(String[] args) {
        Temp_20141220 t = new Temp_20141220();
        String b = "hello";
        System.out.println("b==b1 =" + t.b1 == b);
    }
}

Я ожидал получить выход: b == b1 = true, но я получил: b == b1 = false

Почему так? Поддерживает ли Ubuntu JVM эту функцию Java String Pool?

  • 0
    Пожалуйста, предоставьте код класса Temp_20141220.
Теги:
string
pool

2 ответа

9

Эта

System.out.println("b==b1 =" + t.b1 == b);

эквивалентно

System.out.println( ("b==b1 =" + t.b1) == b);

Вы применяете ссылочное равенство между b и конкатенацией "b==b1 =" и t.b1.

  • 1
    поздравляю по 100к
  • 1
    @JigarJoshi Спасибо! Это был хороший рождественский подарок :)
3

вы сравниваете две разные строки:

  1. строка - "b==b1 =" + t.b1
  2. строка - b

если вы измените свой код на:

System.out.println("b==b1 =" + (t.b1 == b));

вы получите истинное значение на выходе

Ещё вопросы

Сообщество Overcoder
Наверх
Меню