Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
1

Сравнение строк ==

19.07.2016, 16:32. Показов 607. Ответов 8
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Братья, добрый день, у меня большое горе, я в очередной раз запутался. Вообще я начал разбираться с методами hashCode() и equals(). Не скажу, что прям разобрался, но на пути к этому, но вопрос то имеет слабое отношение к этому, так вот, я так понял, что метод equals() для класса String был Override. (Верное ли это утверждение??) . Второе, помня о том, что для сравнения строк по значению их необходимо сравнивать методом equals(), я решил проверить это дело, сравнив две строки == и конечно же был уверен, что получу false, братья, подскажите, почему я получаю true?

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.io.*;
import java.lang.*;
import java.util.*;
 
public class Test  {
    public static void main (String [] args){
        String str = "abc";
        String str_test = "abc";
 
        if (str == str_test){
            System.out.println("this strings is equal");
        }
        
    }
}
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
19.07.2016, 16:32
Ответы с готовыми решениями:

Сравнение строк
Добрый день! Есть такой код public class Test { public static void main(String args) {...

Сравнение строк
Мне нужна помощь в задачке по строкам. У меня вводится две строки, если во второй строке(в любой...

Сравнение строк
У меня что-то не так с условиями в if (command=="clear") и if (command=="exit") ,они не...

Сравнение строк
MessageDigest sha = null; String myKey = pass + salt; ...

8
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
19.07.2016, 16:42 2
Цитата Сообщение от DimaAvatar Посмотреть сообщение
метод equals() для класса String был Override
Почему был? Он и сейчас есть .
Цитата Сообщение от DimaAvatar Посмотреть сообщение
для сравнения строк по значению их необходимо сравнивать методом equals(), я решил проверить это дело, сравнив две строки == и конечно же был уверен, что получу false, братья, подскажите, почему я получаю true?
Вы сравнили две строки не по значение, а по ссылке. И, по счастливой случайности, эти две ссылки указывают на одну и ту же строку.
1
614 / 488 / 175
Регистрация: 02.03.2010
Сообщений: 1,238
19.07.2016, 16:44 3
Внимательнее читаем литературку. Компилятор разработан со многими оптимизациями, одной из которых является приведенный пример. Данные оптимизации сделаны не просто так.
Есть, например похожая оптимизация с Integer'ами, сравнив два разных Integer (не int, а именно Integer) объекта с одинаковыми значениями, например 127, получим true, сравним так же два разных Integer'а со значениями 128 - получим false. Уделяем больше внимания особенностям компилятора, если это так вам интересно.
1
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
19.07.2016, 16:52  [ТС] 4
Добавлено через 3 минуты
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Внимательнее читаем литературку. Компилятор разработан со многими оптимизациями, одной из которых является приведенный пример. Данные оптимизации сделаны не просто так.
Есть, например похожая оптимизация с Integer'ами, сравнив два разных Integer (не int, а именно Integer) объекта с одинаковыми значениями, например 127, получим true, сравним так же два разных Integer'а со значениями 128 - получим false. Уделяем больше внимания особенностям компилятора, если это так вам интересно.
да, спасибо большое, ок, как тогда можно объяснить, что в случае:
Java
1
2
String str = new String("abc");
String str_test = new String("abc");
в этом случае сравнение строк == дает false.

подскажите пожалуйста, почем в этом случае не происходит эм.. отпимизация компилятора?
0
Эксперт Java
4093 / 3827 / 745
Регистрация: 18.05.2010
Сообщений: 9,331
Записей в блоге: 11
19.07.2016, 17:02 5
Цитата Сообщение от DimaAvatar Посмотреть сообщение
почем в этом случае не происходит эм.. отпимизация компилятора?
Потому что спецификация языка говорит: new должен возвращать новый объект. У компилятора связаны руки.
1
0 / 0 / 1
Регистрация: 05.02.2014
Сообщений: 141
20.07.2016, 13:34  [ТС] 6
братья, еще у меня к Вам вопрос такой будет, верным ли будет утверждение, что... для поиска вхождения элемента (объекта) в ArrayList (ну в моем случае методом contains() необходимо Override метод equals т.к.
"Returns true if this list contains the specified element. More formally, returns true if and only if this list contains at least one element e such that (o==null ? e==null : o.equals(e))."
т.е. у меня есть ArrayList объектов, для поиска я создаю какой то объект и проверяю есть ли такой в массиве,
0
Эксперт Java
2398 / 2223 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
20.07.2016, 14:22 7
Цитата Сообщение от DimaAvatar Посмотреть сообщение
для поиска вхождения элемента (объекта) в ArrayList (ну в моем случае методом contains() необходимо Override метод equals
да.
1
Заблокирован
31.07.2016, 12:05 8
Цитата Сообщение от DimaAvatar Посмотреть сообщение
я получаю true?
оптимизация. пробуй так
Java
1
2
String str = new String ("abc");
 String str_test = new String ("abc");
0
1552 / 918 / 193
Регистрация: 26.03.2010
Сообщений: 3,105
03.08.2016, 00:48 9
Цитата Сообщение от _ViPeR_ Посмотреть сообщение
Есть, например похожая оптимизация с Integer'ами, сравнив два разных Integer (не int, а именно Integer) объекта с одинаковыми значениями, например 127, получим true, сравним так же два разных Integer'а со значениями 128 - получим false. Уделяем больше внимания особенностям компилятора, если это так вам интересно.
Тут дело не в компиляторе, просто класс Integer так спроектирован )
0
03.08.2016, 00:48
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
03.08.2016, 00:48
Помогаю со студенческими работами здесь

Сравнение строк в 2х файлах
Условие на фото. BufferedReader reader = new BufferedReader(new...

Сравнение двух строк
Есть две строки, нужно сравнить их по содержимому. Если str1="a", str2="a", то в условие...

Сравнение двух строк
Добрый день, подскажите пожалуйста, у меня есть две строки "12:45:21" и "14:43:45" можно их как то...

Знатоки ЖАБы, сравнение строк
Вот кусочек кода: Scanner sc = new Scanner(System.in); String str; do{ str =...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru