Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> equals и "==" 
V
    Опции темы
ressac
Дата 23.2.2009, 11:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



Код

String s1 = "test";
        String s2 = "test"; 

        if (s1==s2) {
            System.out.println("==");
        } else {
            System.out.println("!=");
        }


получим "=="

Код

        String s1 = "test";
        String s2 = new String("test"); 

        if (s1==s2) {
            System.out.println("==");
        } else {
            System.out.println("!=");
        }


получим "!="


почему? smile


PM MAIL   Вверх
PashaOvechkin
Дата 23.2.2009, 11:57 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 394
Регистрация: 1.4.2007
Где: Riga, Latvia

Репутация: 2
Всего: 4



Есть такая штука в яве. 

Если создаёш 2 одинаковых обьекта так:

Код

String s1 = "test";
String s2 = "test"; 


то при запуске создастся 1 обьект, а s1 и s2 будут на него ссылаться.
Так сделано в целях економии памяти. И с етим нужно быть осторожным... Сам напарывался

Если: 
Код

String s1 = "test";
String s2 = new String("test"); 


то s1 и s2 будут ссылаться каждый на свой обьект. Ето просто нужно знать.
П.С Официальное описание от sun найти не удалось...

Это сообщение отредактировал(а) PashaOvechkin - 23.2.2009, 12:00
PM MAIL Skype   Вверх
ressac
Дата 23.2.2009, 12:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 345
Регистрация: 25.11.2006

Репутация: нет
Всего: 1



спасибо

почему-то так и думал smile
PM MAIL   Вверх
chand0s
Дата 24.2.2009, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 55
Регистрация: 19.2.2007

Репутация: 1
Всего: 3



to автор топика:

А еще помедитируйте над методом String.intern(), чтобы лучше понять как строки в Java устроены.

Например, этот код опять выведет "=="

Код

        String s1 = "test";
        String s2 = new String("test").intern()
        if (s1==s2) {
            System.out.println("==");
        } else {
            System.out.println("!=");
        }

PM MAIL   Вверх
lando1
Дата 24.2.2009, 13:06 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 30.4.2007

Репутация: нет
Всего: нет



для строк всегда надо .equals() использовать.
PM MAIL ICQ   Вверх
nitzshe
Дата 25.2.2009, 12:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 15
Регистрация: 27.5.2008

Репутация: нет
Всего: нет



вот здесь можно по теме посмотреть:

http://www.skipy.ru/technics/objCompPr.htm..._equals_vs_eqeq
PM MAIL   Вверх
Connie
Дата 26.2.2009, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 382
Регистрация: 12.8.2008

Репутация: 1
Всего: 9



PM MAIL WWW   Вверх
aleksandy
Дата 26.2.2009, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 260
Регистрация: 17.12.2006

Репутация: 4
Всего: 5



Цитата(PashaOvechkin @ 23.2.2009,  11:57)
П.С Официальное описание от sun найти не удалось...

Строка - это объект, а объекты сравниваются методом equals() вот и все описание
PM   Вверх
ShellRaiser
Дата 26.2.2009, 12:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


еще чуть и закоммичу
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 20.7.2007
Где: Белaрусь, Гродно

Репутация: нет
Всего: 1



народ, в яве есть такая штука как ссылка на объект
в случае если ты сравниваеш базовые типы, такие как инт, булен, которые не являются объектами классов, то оператор "==" проверяет значения объектов
в случе если же это объекты, то будет проверять не значение а ссылка на объект
т.е.
если я сделяю так:
Код

String s1="s1";
String s2=s1;


то s1==s2 выдаст тру, поскольку они ссылаются на один и тотже объект в памяти

поэтому все строки желательно сравнивать через equals к примеру :
Код

String s1="str";
String s2="str";

if(s1.equals(s2))
{
blablabla;
}


ещё правильным тоном сравнение строк и констан является следущий код:
Код

if("Some String".equals(str1))
{
blablabla;
}


поскольку иногда вы не можете всё предусмотреть и вам придёт налловый объект str1 и токда прилага упадёт с наллпоинтером...

PM MAIL ICQ Skype   Вверх
Kangaroo
Дата 26.2.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AA - Aussie Animal
****


Профиль
Группа: Участник Клуба
Сообщений: 2042
Регистрация: 7.10.2006
Где: US

Репутация: 21
Всего: 104



Блин, да PashaOvechkin вторым постом уже три дня назад ответил на поставленный вопрос. Зачем каждый заходит и дописывает еще что-то?
Пишите в FAQ тогда уже, полезней будет smile


--------------------
Lost....
PM MAIL MSN   Вверх
ShellRaiser
Дата 26.2.2009, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


еще чуть и закоммичу
*


Профиль
Группа: Участник
Сообщений: 156
Регистрация: 20.7.2007
Где: Белaрусь, Гродно

Репутация: нет
Всего: 1



прокрутил линк) незаметил)
зато никуда ссылаццо не надо)
PM MAIL ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1232 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.