Вопрос: Как сравнивать строки в Java?

 

Java с нуля #8 (часть 1): строки в Java, методы класса String

Видео взято с канала: selfedu


 

Java. Особенность 5. Сравниваем строки.

Видео взято с канала: Java Trener


 

Как устроены строки в Java и что с ними делать [GeekBrains]

Видео взято с канала: GeekBrains


 

Строки в Java. String, StringBuilder, StringBuffer, Wrappers. Java Professional. Урок 5

Видео взято с канала: ITVDN


 

Java для начинающих. Урок 42: Метод equals() и String Pool.

Видео взято с канала: alishev


 

Урок Java 204: Сравнения строк

Видео взято с канала: Уроки Java


 

Уроки Java №23 Сравнение строк и других объектов

Видео взято с канала: GMByte Java


8 комментариев

  • Добрый день, спасибо большое за ваши уроки! Но может мне кто нибудь объяснить суть переопределения equal в этом уроке? Стоит ли когда либо вообще переопределять методы Objecta? В конкретном случае применять downcasting и т.д., когда можно просто создать семантически верный метод equalId (например), и принимать в качестве аргументов сразу Animal, а не Object?

  • а вообще по сути вся обьектно оренироаная метода есть не что иное как наложение многомерных матриц и известна уже как минимум лет тысячью математикам полиморфизм не что иное как наложение матриц  ) ничего в ней особенного нету для особо извращенных умов она и ненужна им достаточно многомерных массивов ))) я вот за умеренное их использование это все равно что архиватор пожмать можно очень сильно но время  критично )))

  • Все понятно, но вы так и не сказали, почему у класса String метод equals уже переопределен заранее? Если в классе Animals нам приходилось переопределять метод equals вручную, то почему в классе String это уже сделано за нас, и самое главное как?

  • Странно, что автор не сказал, что в объектах класса String метод.equals() переопределён, поэтому срабатывает, именно сравнивая текст в строках.
    Также не помешало бы сказать то, что будет, если тут:
    String s1 = «Hello»;
    String s2 = «Hello»;

    присвоить переменной s2 другую строку. Поменяется s1 или нет (подсказка: нет, не поменяется).

  • путаницы не должно вроде бы возникнуть за строковые переменные объявленные не  через NEW отвечает интерпретатор за их использование и удаление.

    А вот те которые через NEW за ними самому вроде б нада следить это вроде как другой тип получается но мне трудно представить объектно ориентированную структуру управляющию всем этим делом со строками а вот эи операторы котрые эквивалент и тд и тп они в других языках тоже есть но это катсыль )объектность она хорошо но в меру и в даном случае она как раз таки не работает не в Ява не в каком другом языке ) и вообще я считаю переоценивают всю эту обьектно орентированость во первых это достаточно сложный механизм не свойственный восприятию человеком а если и свойственный то в определенной мере получается что все это дело можно так завернуть что распутать будет уже не возможно

  • Довольно понятно, но было бы неплохо так же рассказать про hashCode() и почему лучше его перегружать вместе с equals(). Ну а в equals я бы добавил:
    if (this = object)

    return true;
    if (!(object instanceof Animal) )

    return false;

  • 37:54

    разработчики пишут, что можем

    String str = new String(«old»);

    MethodHandles.Lookup lookup = MethodHandles.privateLookupIn(Field.class, MethodHandles.lookup());

    VarHandle Modifiers = lookup.findVarHandle(Field.class,»modifiers»,int.class);

    Field field = str.getClass().getDeclaredField(«value»);

    field.setAccessible(true);

    int mods = field.getModifiers();

    if (Modifier.isFinal(mods)) {

    Modifiers.set(field,mods & Modifier.FINAL);

    }

    field.set(str,»new».getBytes(«UTF8»));

    System.out.println(«В строке str сейчас » + str);

    Вот только я не пойму как слеплять двухбайтные русские символы.

    Может вы покажите?