public class Test {
public static void main(String[] args) {
String str = String.valueOf(65);
if(str.equals(str)){
System.out.println("Меня зовут Ваня");
}
}
}
Правильно ли я проверил значение которое было целочисленное, а стало строковое (65)? Если у нас сравнивается 1 (строка), значение, можно ли использовать вот такую конструкцию:
String str = String.valueOf(65);
if(str.equals(str)){
System.out.println("Меня зовут Ваня");
}
И хотел еще спросить: equals() у нас сравнивает значение строк. А == сравнивает ссылки на объекты?
Выражение:
str.equals(str)
всегда будет возвращать true, если str не равно null, т.к. строка сравнивается сама с собой.
Если нужно проверить правильная ли получилась строка можете использовать такое условие:
if("65".equals(str)) {
....
equals() у нас сравнивает значение строк. А == сравнивает ссылки на объекты?
Да.
equals
это в принципе метод, который обычно проводит массу проверок:
null.euals(null) == false
)obj1 == obj2
В классе String
метод equals
после всех проверок на одинаковость классов сравнивает массивы байтов, полученные из строк:
@HotSpotIntrinsicCandidate
public static boolean equals(byte[] value, byte[] other) {
if (value.length == other.length) {
for (int i = 0; i < value.length; i++) {
if (value[i] != other[i]) {
return false;
}
}
return true;
}
return false;
}
Но это все верно для хорошо реализованных классов, таких как String
, идущих с Java "из коробки". Для новых классов, если вы не переопределите этот метод, equals
будет работать по умолчанию как в родительском классе (скорее всего классе Object
):
public boolean equals(Object obj) {
return (this == obj);
}
И в этом случае будет просто сравнивать ссылки. Имейте в виду такое коварство.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Почему при создании массива используется new, так же как при создании обьекта:
Я уже битый час не могу понять, что с этим кодом не так! Иконка не устанавливается, Путь перепроверил всеми возможными и невозможными способамиЧто...
есть форма с отправкой данных на е-майлПри заполнение и отправке надо что бы пользователю открывался файл который находится по адресу /lessons/l1