Java для начинающих. Урок 24: Класс Object и метод toString()

Поділитися
Вставка
  • Опубліковано 20 гру 2024

КОМЕНТАРІ • 124

  • @alishevN
    @alishevN  7 років тому +9

    Регистрируйтесь на курс "Продвинутая Java": ua-cam.com/video/rRe1vT0SDD8/v-deo.html
    Практикуйтесь в написании Java кода: java-marathon.tilda.ws

  • @JogaB0NIT0
    @JogaB0NIT0 5 років тому +17

    Дружище, спасибо тебе большое за то, что ты делаешь! От тебя эта информация усваивается легче, чем от всех остальных. Ёмко, кратко и понятно!

  • @jacktorrance8144
    @jacktorrance8144 9 років тому +42

    Отличные уроки! Большое спасибо! Не бросай это дело.

    • @alishevN
      @alishevN  9 років тому +1

      +Евгений Торбеев спасибо!

    • @jacktorrance8144
      @jacktorrance8144 9 років тому +1

      +javaRussia хотелось бы узнать, проводишь ли ты частные занятия или какие нибудь практические проекты на Java?

    • @jacktorrance8144
      @jacktorrance8144 9 років тому

      +javaRussia хотелось бы узнать, проводишь ли ты частные занятия или какие нибудь практические проекты на Java?

    • @alishevN
      @alishevN  9 років тому +1

      Частные занятия не провожу, я не преподаватель. А на java я пишу довольно много.

    • @1979Vodoley
      @1979Vodoley 8 років тому

      Скажи пожалуйста в уроках трёх годичной давности у некоторых с начало идут написания методов, а внизу уже исполнительный код, а в теперешних записях с начало исполнительный код, а потом методы?! Это без разницы или просто решили теперь так писать?

  • @РоманШабанов-ю6г
    @РоманШабанов-ю6г 7 років тому +17

    Чувак люто плюсую! За 10 минут мне помог понять то что я очень долго не мог вкурить)

    • @Judosaper
      @Judosaper 4 роки тому

      Ты лютый программист!)

  • @ArtemNiknameName
    @ArtemNiknameName 6 років тому +15

    "Все объекты являются объектами" - гениально. Спасибо. :)

    • @mohawberel
      @mohawberel 5 років тому +2

      В этом мире нет ничего кроме обьектов

    • @КахарманБалтабаев-б2о
      @КахарманБалтабаев-б2о 4 роки тому +7

      Скорее всего, автор имел ввиду, что все объекты являются объектами класса Object

  • @nezhinHizZ
    @nezhinHizZ 6 років тому +6

    Отличный урок. 6 дизлайков, я так подозреваю, поставили те, то вообще ничего не понял. Не отчаивайтесь, всё придёт со временем, если не забросите програмирование. Просто повторите урок рано или поздно со String придётся иметь дело. Вернётесь и всё будет понятно! Автору респект!

  • @Елизавета-ц5л4ч
    @Елизавета-ц5л4ч 2 роки тому +3

    Я безумно благодарна за эти уроки🥹❤️ все настолько понятно и доступно, столько уточнений, чтоб я делала в универе без вас, не знаю 😂 там все вообще непонятно объясняют, еще раз огромное вам спасибо за такой труд🥰

    • @tobesunset820
      @tobesunset820 Рік тому

      можно с вами связаться как нибудь?

  • @dahtes2107
    @dahtes2107 5 років тому +3

    Спасибо дядька, освежил себе память по object) Дальше все интереснее и интереснее

  • @IvanNikitin-j4v
    @IvanNikitin-j4v 5 років тому +73

    Так называемые ошибки, которые допустил автор, перепутав пару раз метод и объект, не введут человека в заблуждение если тот, в свою очередь, изучил и понял предыдущие уроки.

  • @СайкалЧолпонбайкызы

    Хочу выразить благодарность за вашу работу. Хожу на курсы для начинающих по Java,но там не могут объяснить ,как это делаете Вы. Я на ваших 10-15 минутных видео больше понимаю,чем на 2-часовых уроках.

    • @niklaus9
      @niklaus9 8 місяців тому

      Здравствуйте , есть результаты по обучению? интересно))

  • @quicktime1205
    @quicktime1205 2 роки тому +3

    Отличные доходчивые уроки. Хотя первые минуты про Object и родительский класс было непонятно, но все встало на свои места после просмотра Урока №25. Даже подумалось, что 25-ый урок мог бы быть 24, а 24 - 25ым)

  • @ВолодимирТкач-я6у
    @ВолодимирТкач-я6у 9 років тому +4

    Спасибо тебе за такие хорошие уроки)) Ты очень доступно объясняешь, так что продолжай в том же духе)))

    • @alishevN
      @alishevN  9 років тому +1

      +Vladimir Tkach Пожалуйста)

  • @bonefire2725
    @bonefire2725 4 роки тому +7

    Лучше наверно было сказать что попытка вывести объект на экран изначально выводит ссылку на объект, которая в свою очередь состоит из названия класса, "@" и уникального имени ссылки. А уникальное имя ссылки в свою очередь представляет собой хэш-код (неповторяющееся в классе численное значение).

  • @vitaliyk.6371
    @vitaliyk.6371 6 років тому

    Прекрасная подача довольно таки головоломкого материала,но прослушал несколько раз и все стало ясно.Спасибо за качественное обучение.

  • @ПётрКоротков-ы2и
    @ПётрКоротков-ы2и 6 років тому +2

    Спасибо, это было очень полезно и доступно. А то, что иногда перепутаны понятия не такая уж проблема, т.к. это вполне свойственно для человека.

  • @schbkb8868
    @schbkb8868 4 роки тому

    сколько смотрю твои видосы уже, всегда понятно, кратко. Спасибо!

  • @Dermidont333
    @Dermidont333 7 місяців тому

    Очень доходчиво и понятно. Спасибо.

  • @crashoverride9681
    @crashoverride9681 7 років тому +14

    Непонятный цифры и буквы после собачки и названия класса - это адрес ячейки памяти в стеке где хранится ссылка на экземпляр класса

  • @RimuSanLinux
    @RimuSanLinux 4 місяці тому

    Я с этим сталкивался на практике также думал что происходит почему так нельзя , теперь понял

  • @yauhenizakhno8510
    @yauhenizakhno8510 6 років тому +6

    6:50 Сигнатура - это только имя метода и аргументы. И всё. public String в сигнатуру не входят

  • @lexelkovich35
    @lexelkovich35 2 роки тому +3

    Немного поправлю: "Сигнатура метода - это имя метода плюс параметры (причем порядок параметров имеет значение). В сигнатуру метода не входит возвращаемое значение, а также бросаемые им исключения"

  • @ИгорьБирт-я2щ
    @ИгорьБирт-я2щ 3 роки тому +1

    По поводу практики к этому курсу, на моем компе, разница в скорости работы кода получилась почти в (22 мс против 241 мс в пользу StringBuilder'a), это верный результат?

  • @alisaholainen6334
    @alisaholainen6334 4 роки тому

    Очень классный урок, спасибо!

  • @nedonegr
    @nedonegr 5 років тому +1

    Йоу, спасибо, всё доходчиво, красавчик, спасибки спасибки!

  • @igortarasov4482
    @igortarasov4482 4 роки тому

    Огромное спасибо. Очень доступно.

  • @igorgogy9119
    @igorgogy9119 3 роки тому

    не смотря на оговорки объект-метод (даже моего не джуновского пока уровня хватает чтобы их онлайн понимать и исправлять в голове), объясняешь ты классно!

    • @DolphinArtem
      @DolphinArtem 3 роки тому

      Привет, скажи, пожалуйста, мы ведь в методе String, который переопределил метод родителя, должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?

    • @SAHEYJ
      @SAHEYJ 3 роки тому

      @@DolphinArtem как видишь да

    • @user-ot7em9bp7f
      @user-ot7em9bp7f 2 роки тому

      ​@@DolphinArtem тут возвращается одно значение (строковое), а не int и String. в данном случае автор вернул строку, состоящую из name и age. name+" "+int - это одно строковое значение (имя пробел возраст). return в целом не может возвращать несколько переменных

  • @Devivl
    @Devivl 2 роки тому

    Очень интересно. Спасибо!

  • @ВладиславКипер-м8ч
    @ВладиславКипер-м8ч 3 роки тому +1

    Добрый день. Я еще только учусь. но вот переопределение метода toString не работает в JDK 16, или я что-то не так понимаю. Но переписав код ровно так же как в уроке, у меня в консоль выводится хешккод

  • @YurijRudakevych
    @YurijRudakevych 7 років тому

    Очень интерестно! Спасибо большое.

  • @nurkhabib8954
    @nurkhabib8954 2 роки тому +1

    Перед переопределением метода toString не нужно было прописывать аннотацию override? Не умничаю, просто частично зацепил эту тему, стало интересно, правильно ли я понял её.

  • @wivernx9449
    @wivernx9449 4 роки тому +1

    почему не используете аннотацию @Override при переопределени метода toString в классе Human?

  • @korumstar9989
    @korumstar9989 6 років тому

    Спасибо за работу!

  • @dmtconst
    @dmtconst Рік тому

    Спасибо, мне помогло решить задачу :)

  • @ДмитрийКоликов-х7ы
    @ДмитрийКоликов-х7ы 4 роки тому +1

    Попробовал вывести int age, но не дает как преобразуется строка. Напрмер int age, String name можно.
    Решил добавить по такой логике ""+age, теперь у нас преобразуется один конструктор с параметрами int age.
    Кстати урок уже второй раз смотрю, закрепляю знания)
    Еще забыл добавить если мы создадим конструктор с параметра String name, int age. А второй конструктор String address, int street.
    Будет ошибка) нельзя создавать конструктор с одинаковыми примитивнами типами ил классами.
    А наоборот уже можно) Stirng name, int age ----> int street, String address)
    Кажется базовые ошибки, но все равно бывает допускаешь))

  • @Andrzej3935
    @Andrzej3935 3 роки тому

    Спасибо, вы лучший.

  • @АлександрГалянов-ч7ы

    Возможно этот урок стоило поместить после урока о наследовании, картинка бы лучше сложилась) имхо)
    Спасибо за твой работу)

  • @РадмирКалимуллин-б1л

    Подскажите пожалуйста, где можно закрепить пройденные уроки практикой?

  • @ВячеславХарламов-е9р

    Спасибо за урок!

  • @alexandrkomar4741
    @alexandrkomar4741 3 роки тому

    вопрос следующий: как так получается, что в методе toString мы указываем тип возвращаемой переменной String, а смогли вернуть и String и int? return name+"."+age;

    • @notinvented7739
      @notinvented7739 3 роки тому +1

      Java при конкатенации (сложении) автоматически конвертировала значение age в строку. То есть, из некоторого числа (например, 10), мы получили строку ("10").

  • @gadjik_youtube
    @gadjik_youtube 2 роки тому

    спасибо ! понятно и полезно

  • @artempalamarchuk9440
    @artempalamarchuk9440 7 років тому

    Когда мы выводим обьект System.out.println(h1),- отображает не хеш код, а адрес памяти в котором находится объект.
    А хэш код и выводится своим методом System.out.println(h1.hashCode);

    • @alishevN
      @alishevN  7 років тому +2

      docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()

    • @artempalamarchuk9440
      @artempalamarchuk9440 7 років тому

      Да точно, хеш код просто в другом представлении, меня ввели в заблуждение. А возможно ли каким-то способом посмотреть адресс памяти?

  • @ПетрФролов-е6г
    @ПетрФролов-е6г 6 років тому

    Как в IntelliJ IDEA посмотреть класс Object? Какие клавиши надо нажимать?

    • @КонстантинМ-е7м
      @КонстантинМ-е7м 6 років тому +2

      Зажать и удерживать клавишу Ctrl, подвести курсор мыши к слову "Объект" и кликнуть по этому слову. Отпустить клавишу Ctrl.

  • @niklaus9
    @niklaus9 9 місяців тому +1

    начал изучать Джаву, напишите мне через год, узнать результат)

    • @Wdx-xyz
      @Wdx-xyz 6 місяців тому

      Щас ты как

    • @niklaus9
      @niklaus9 6 місяців тому

      @@Wdx-xyz учу, год не прошел еще))

    • @RimuSanLinux
      @RimuSanLinux 4 місяці тому

      а щас как , каждые два месяца писать будем

    • @niklaus9
      @niklaus9 4 місяці тому

      @@RimuSanLinux только через год напишу🤣

    • @ericawexler1896
      @ericawexler1896 4 дні тому

      Сейчас как у тебя дела? 😺

  • @DolphinArtem
    @DolphinArtem 3 роки тому

    Мы ведь в методе String,который переопределил метод родителя должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?

    • @SAHEYJ
      @SAHEYJ 3 роки тому +1

      Как видишь да

    • @DolphinArtem
      @DolphinArtem 3 роки тому

      @@SAHEYJ а почему, потому что это всё теперь строка?

    • @АртемК-в2н
      @АртемК-в2н 3 роки тому

      @@DolphinArtem Да, это преобразование типов.
      Чтобы лучше поразбираться, можно посмотреть результат вывода, с первого взгляда покажется странным
      System.out.println(1 + 1 + "");
      System.out.println("" + 1 + 1 );

  • @cardanonn6893
    @cardanonn6893 7 років тому

    а почему в методе toString для возврата не использовали переменные this.name и this.age ?

    • @Lexoid65
      @Lexoid65 7 років тому +6

      В смысле? Автор ссылался как раз таки на эти переменные, правда без использования ключевого слова this, которое в данном случае не нужно. Когда мы обычно используем ключевое слово this? Мы используем его тогда, когда при описании метода аргументы, которые метод будет принимать на вход, совпадают с названиями полей, к примеру, в сеттерах. Это нужно для того, чтобы мы внутри метода не присваивали значения, которые поступили в аргументы, локальным переменным. Да и вообще, если уж на то пошло, то ключевое слово this используется в контексте сеттеров, а у нас получился get-метод, который возвращает на место вызова метода значения полей name и age для каждого конкретного объекта на котором этот метод вызывается.

    • @cardanonn6893
      @cardanonn6893 7 років тому

      Да я понял, спасибо за ответ.

    • @Lexoid65
      @Lexoid65 7 років тому

      Пожалуйста!)

  • @tigrangegamian1509
    @tigrangegamian1509 4 роки тому

    Есть вопрос, и он с последующи видео не стало яснее. В 03:06 ты сказал следующее:
    "Все классы, которые мы делаем, если мы создаем из них объекты, то все эти классы должны быть не только классы, которые мы декларируем, но они еще должны быть просто объектами"
    Ты мог бы ,пожалуйста, прояснить этот момент ? :)

    • @SAHEYJ
      @SAHEYJ 3 роки тому

      Все классы которые ты делаешь это не только классы но ещё и объекты

  • @Jeugenelight
    @Jeugenelight 7 років тому

    У меня вопрос возник. Если мы создаем конструктор в который передаем аргументы например Имя и Возраст (String name, int age). Зачем тогда нужны сеттеры? Если в конструкторе и так присваиваются значения полям? Можно конечно в коде конструктора написать setName(name),но есть ли в этом смысл? Если просто можно все сделать через конструктор.
    P.S.Спасибо за видео.

    • @alexanderwicked8990
      @alexanderwicked8990 7 років тому +18

      Аргументы конструктора нужны в том случае, когда мы хотим инициализировать поля name и age при создании объекта. А сеттеры нужны в том случае, если мы хотим поменять их в дальнейшем, по ходу программы, и поля name и age при этом private.
      Представь себе создание персонажа рпг игры, где с самого начала у него должно быть имя и класс (например воин). Он обязательно должен иметь и то и другое, иначе он никто. Для этого аргументы конструктора.
      Но по ходу игры, персонаж вдруг решил сменить имя и перепрофилироваться, скажем в мага. Вот за этим и нужен сеттер.

    • @vsevolodshelaiev2866
      @vsevolodshelaiev2866 5 років тому

      @@alexanderwicked8990 Спасибо большое,до этого тоже не понимал

    • @АлексейЧернов-с8ч
      @АлексейЧернов-с8ч 2 роки тому +2

      На всякий случай добавлю, если кому то нужно.
      Важно не забывать, что в сеттерах мы можем сделать проверку (напр. возраст не меньше нуля или не пустое поле имени).
      И если мы сделаем конструктор, где есть прямой доступ к полям (возраст и имя) то пользователь может писать всё что угодно, это нарушение инкапсуляции.
      Поэтому желательно в коде конструктора, использовать сеттеры, в которые передаются параметры конструктора.
      private int age;
      private String name;
      //Поле приватное, доступ только через сеттер, прямой доступ (this.name - age) только в родном классе.

      public Human(int age, String name){
      setAge(age);
      setName(name);
      }
      //Конструктор, в котором сеттеры, соответственно есть проверки.
      public void setAge(int age) {
      if (age > 0) {
      this.age = age;
      }
      } //Сеттер с проверкой.

  • @Daniel-mo1iy
    @Daniel-mo1iy 2 роки тому

    hashCode можно увидеть с помощью метода hashCode(), а не просто выводя переменную на экран

  • @ДенисКораблёв-г1т
    @ДенисКораблёв-г1т 8 років тому

    Хороший урок, все понятно, но есть вопрос не много не по теме, вы тоже Intellij IDEA пользуетесь, как и я, так вот вопрос по среде, может кто знает? Проблема заключается в том, что у меня не компилируется пакет, если в любом другом пакете есть ошибка, то есть, я учу язык по книгам, там есть задание, я его начинаю делать, что-то например не получается и я решаю оставить его на потом, что бы доделать, и создаю другой покет с классами и main и делаю его правильно, и когда пытаюсь проверить что я написал, то у меня показывает, что там где-то есть покет, который не доделан и пока я его не исправлю, то новый проверить не получается, приходится комментировать, но это жутко не удобно, потому что потом сложно найти покет который надо доделать, например в Eclips такого не было, ну не могу я сделать, оставил делаю другое и все компилируется, а не доделанная программка просто в списке пакетов подчеркивается красным и я прекрасно вижу что он не доделан и его легко найти. Помогите пожалуйста.

    • @Chuluckan
      @Chuluckan 8 років тому

      Закомментируй весь код класса, который ошибку компиляции выдаёт

    • @ДенисКораблёв-г1т
      @ДенисКораблёв-г1т 8 років тому

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

    • @Chuluckan
      @Chuluckan 8 років тому

      Денис Коораблёв согласен

  • @Anatoli-bq1pe
    @Anatoli-bq1pe 2 роки тому

    Благодарю

  • @ЄвгенМосквяк
    @ЄвгенМосквяк 7 років тому +1

    разве String string это обьект ? это переменная с типом String

  • @jamjam3337
    @jamjam3337 4 місяці тому

    спасибо!

  • @TheShamaus
    @TheShamaus 4 роки тому

    Спасибо!

  • @nadirnazirov4707
    @nadirnazirov4707 Рік тому

    Кстати я вставил extends Object для наглядности и всё работает как прежде:
    class Human extends Object{

  • @revert1551
    @revert1551 8 років тому +1

    ты нас оканчательно запутал!!!

  • @beavissooqa7585
    @beavissooqa7585 7 років тому

    Все классно, везде молодец, кроме того момента где сказал что функция возвращает хэш-код..

    • @alishevN
      @alishevN  7 років тому

      docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()

  • @simplechannel7859
    @simplechannel7859 6 років тому

    Спасибо

  • @АзилаУркунбаева
    @АзилаУркунбаева 2 роки тому

    👍👍👍

  • @МаксМакс-ч8к
    @МаксМакс-ч8к 3 роки тому +2

    Без какой либо наглядной схемы с первого, даже второго раза понять почти не реально.......
    Новичкам такое со слов не заходит...

  • @armatdavletalin8542
    @armatdavletalin8542 6 років тому +2

    Пересмотрите свой урок. Первое, лучше называть Object (именно обжект), а объект объектом, тогда меньше путаницы. То есть все объекты являются Object. Второе, очень часто вы называете методы объектами, что еще больше запутывает. А в целом, уроки очень познавательны, полезны и подробно изложены.

  • @bari9631
    @bari9631 5 років тому

    супер

  • @revert1551
    @revert1551 8 років тому

    расскажи про многопаточность

  • @ЕвгВел
    @ЕвгВел 5 років тому

    смотрю уроки вроде бы понятно, но как до дела доходит полнейшая каша. очень сводят с ума вызов методов и передача параметров. ну а так при большом желании разобраться во всем можно.

  • @ez2387
    @ez2387 Рік тому

    ТЕМА НЕ РАСКРЫТА ОЧЕНЬ СМУТНО ОБЪЯСНИЛ , СТАВЛЮ ОЦЕНКУ 3-

  • @sanya9740
    @sanya9740 2 роки тому +1

    Этот урок и правда не очень. Много путаницы и подмены понятий.

  • @RedasGamesCom
    @RedasGamesCom 7 років тому +13

    Ужас, путаешь методы и обьекты, переменные и обьекты, называешь то одним словом то другим, пересмотри своё видео, это тихий ужас, как начинающий должен это понять?Я то понимаю, но ты путаешь людей.

  • @nailtagiyev6340
    @nailtagiyev6340 4 роки тому

    Спасибо большое. Индусы нормально объяснять не могут :(

  • @C2H5OHH
    @C2H5OHH 2 роки тому

    Спасибо!