Скажи пожалуйста в уроках трёх годичной давности у некоторых с начало идут написания методов, а внизу уже исполнительный код, а в теперешних записях с начало исполнительный код, а потом методы?! Это без разницы или просто решили теперь так писать?
Отличный урок. 6 дизлайков, я так подозреваю, поставили те, то вообще ничего не понял. Не отчаивайтесь, всё придёт со временем, если не забросите програмирование. Просто повторите урок рано или поздно со String придётся иметь дело. Вернётесь и всё будет понятно! Автору респект!
Я безумно благодарна за эти уроки🥹❤️ все настолько понятно и доступно, столько уточнений, чтоб я делала в универе без вас, не знаю 😂 там все вообще непонятно объясняют, еще раз огромное вам спасибо за такой труд🥰
Так называемые ошибки, которые допустил автор, перепутав пару раз метод и объект, не введут человека в заблуждение если тот, в свою очередь, изучил и понял предыдущие уроки.
Хочу выразить благодарность за вашу работу. Хожу на курсы для начинающих по Java,но там не могут объяснить ,как это делаете Вы. Я на ваших 10-15 минутных видео больше понимаю,чем на 2-часовых уроках.
Отличные доходчивые уроки. Хотя первые минуты про Object и родительский класс было непонятно, но все встало на свои места после просмотра Урока №25. Даже подумалось, что 25-ый урок мог бы быть 24, а 24 - 25ым)
Лучше наверно было сказать что попытка вывести объект на экран изначально выводит ссылку на объект, которая в свою очередь состоит из названия класса, "@" и уникального имени ссылки. А уникальное имя ссылки в свою очередь представляет собой хэш-код (неповторяющееся в классе численное значение).
Немного поправлю: "Сигнатура метода - это имя метода плюс параметры (причем порядок параметров имеет значение). В сигнатуру метода не входит возвращаемое значение, а также бросаемые им исключения"
По поводу практики к этому курсу, на моем компе, разница в скорости работы кода получилась почти в (22 мс против 241 мс в пользу StringBuilder'a), это верный результат?
не смотря на оговорки объект-метод (даже моего не джуновского пока уровня хватает чтобы их онлайн понимать и исправлять в голове), объясняешь ты классно!
Привет, скажи, пожалуйста, мы ведь в методе String, который переопределил метод родителя, должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?
@@DolphinArtem тут возвращается одно значение (строковое), а не int и String. в данном случае автор вернул строку, состоящую из name и age. name+" "+int - это одно строковое значение (имя пробел возраст). return в целом не может возвращать несколько переменных
Добрый день. Я еще только учусь. но вот переопределение метода toString не работает в JDK 16, или я что-то не так понимаю. Но переписав код ровно так же как в уроке, у меня в консоль выводится хешккод
Перед переопределением метода toString не нужно было прописывать аннотацию override? Не умничаю, просто частично зацепил эту тему, стало интересно, правильно ли я понял её.
Попробовал вывести 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) Кажется базовые ошибки, но все равно бывает допускаешь))
вопрос следующий: как так получается, что в методе toString мы указываем тип возвращаемой переменной String, а смогли вернуть и String и int? return name+"."+age;
Java при конкатенации (сложении) автоматически конвертировала значение age в строку. То есть, из некоторого числа (например, 10), мы получили строку ("10").
Когда мы выводим обьект System.out.println(h1),- отображает не хеш код, а адрес памяти в котором находится объект. А хэш код и выводится своим методом System.out.println(h1.hashCode);
Мы ведь в методе String,который переопределил метод родителя должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?
@@DolphinArtem Да, это преобразование типов. Чтобы лучше поразбираться, можно посмотреть результат вывода, с первого взгляда покажется странным System.out.println(1 + 1 + ""); System.out.println("" + 1 + 1 );
В смысле? Автор ссылался как раз таки на эти переменные, правда без использования ключевого слова this, которое в данном случае не нужно. Когда мы обычно используем ключевое слово this? Мы используем его тогда, когда при описании метода аргументы, которые метод будет принимать на вход, совпадают с названиями полей, к примеру, в сеттерах. Это нужно для того, чтобы мы внутри метода не присваивали значения, которые поступили в аргументы, локальным переменным. Да и вообще, если уж на то пошло, то ключевое слово this используется в контексте сеттеров, а у нас получился get-метод, который возвращает на место вызова метода значения полей name и age для каждого конкретного объекта на котором этот метод вызывается.
Есть вопрос, и он с последующи видео не стало яснее. В 03:06 ты сказал следующее: "Все классы, которые мы делаем, если мы создаем из них объекты, то все эти классы должны быть не только классы, которые мы декларируем, но они еще должны быть просто объектами" Ты мог бы ,пожалуйста, прояснить этот момент ? :)
У меня вопрос возник. Если мы создаем конструктор в который передаем аргументы например Имя и Возраст (String name, int age). Зачем тогда нужны сеттеры? Если в конструкторе и так присваиваются значения полям? Можно конечно в коде конструктора написать setName(name),но есть ли в этом смысл? Если просто можно все сделать через конструктор. P.S.Спасибо за видео.
Аргументы конструктора нужны в том случае, когда мы хотим инициализировать поля name и age при создании объекта. А сеттеры нужны в том случае, если мы хотим поменять их в дальнейшем, по ходу программы, и поля name и age при этом private. Представь себе создание персонажа рпг игры, где с самого начала у него должно быть имя и класс (например воин). Он обязательно должен иметь и то и другое, иначе он никто. Для этого аргументы конструктора. Но по ходу игры, персонаж вдруг решил сменить имя и перепрофилироваться, скажем в мага. Вот за этим и нужен сеттер.
На всякий случай добавлю, если кому то нужно. Важно не забывать, что в сеттерах мы можем сделать проверку (напр. возраст не меньше нуля или не пустое поле имени). И если мы сделаем конструктор, где есть прямой доступ к полям (возраст и имя) то пользователь может писать всё что угодно, это нарушение инкапсуляции. Поэтому желательно в коде конструктора, использовать сеттеры, в которые передаются параметры конструктора. 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; } } //Сеттер с проверкой.
Хороший урок, все понятно, но есть вопрос не много не по теме, вы тоже Intellij IDEA пользуетесь, как и я, так вот вопрос по среде, может кто знает? Проблема заключается в том, что у меня не компилируется пакет, если в любом другом пакете есть ошибка, то есть, я учу язык по книгам, там есть задание, я его начинаю делать, что-то например не получается и я решаю оставить его на потом, что бы доделать, и создаю другой покет с классами и main и делаю его правильно, и когда пытаюсь проверить что я написал, то у меня показывает, что там где-то есть покет, который не доделан и пока я его не исправлю, то новый проверить не получается, приходится комментировать, но это жутко не удобно, потому что потом сложно найти покет который надо доделать, например в Eclips такого не было, ну не могу я сделать, оставил делаю другое и все компилируется, а не доделанная программка просто в списке пакетов подчеркивается красным и я прекрасно вижу что он не доделан и его легко найти. Помогите пожалуйста.
так и делаю, но это пипец как не удобно, про этот кривой класс можно ничайно забыть и в итоге долго искать, в эклипсе например такой проблемы нет, там ну не работает класс, оставил его - он подчеркивается красным(и видно что его надо исправить), но компиляции других отдельных классов и покетов не мешает, вот если бы так и в идее можно было, была бы вообще идеальная среда
Пересмотрите свой урок. Первое, лучше называть Object (именно обжект), а объект объектом, тогда меньше путаницы. То есть все объекты являются Object. Второе, очень часто вы называете методы объектами, что еще больше запутывает. А в целом, уроки очень познавательны, полезны и подробно изложены.
смотрю уроки вроде бы понятно, но как до дела доходит полнейшая каша. очень сводят с ума вызов методов и передача параметров. ну а так при большом желании разобраться во всем можно.
Ужас, путаешь методы и обьекты, переменные и обьекты, называешь то одним словом то другим, пересмотри своё видео, это тихий ужас, как начинающий должен это понять?Я то понимаю, но ты путаешь людей.
Регистрируйтесь на курс "Продвинутая Java": ua-cam.com/video/rRe1vT0SDD8/v-deo.html
Практикуйтесь в написании Java кода: java-marathon.tilda.ws
Дружище, спасибо тебе большое за то, что ты делаешь! От тебя эта информация усваивается легче, чем от всех остальных. Ёмко, кратко и понятно!
Отличные уроки! Большое спасибо! Не бросай это дело.
+Евгений Торбеев спасибо!
+javaRussia хотелось бы узнать, проводишь ли ты частные занятия или какие нибудь практические проекты на Java?
+javaRussia хотелось бы узнать, проводишь ли ты частные занятия или какие нибудь практические проекты на Java?
Частные занятия не провожу, я не преподаватель. А на java я пишу довольно много.
Скажи пожалуйста в уроках трёх годичной давности у некоторых с начало идут написания методов, а внизу уже исполнительный код, а в теперешних записях с начало исполнительный код, а потом методы?! Это без разницы или просто решили теперь так писать?
Чувак люто плюсую! За 10 минут мне помог понять то что я очень долго не мог вкурить)
Ты лютый программист!)
"Все объекты являются объектами" - гениально. Спасибо. :)
В этом мире нет ничего кроме обьектов
Скорее всего, автор имел ввиду, что все объекты являются объектами класса Object
Отличный урок. 6 дизлайков, я так подозреваю, поставили те, то вообще ничего не понял. Не отчаивайтесь, всё придёт со временем, если не забросите програмирование. Просто повторите урок рано или поздно со String придётся иметь дело. Вернётесь и всё будет понятно! Автору респект!
Я безумно благодарна за эти уроки🥹❤️ все настолько понятно и доступно, столько уточнений, чтоб я делала в универе без вас, не знаю 😂 там все вообще непонятно объясняют, еще раз огромное вам спасибо за такой труд🥰
можно с вами связаться как нибудь?
Спасибо дядька, освежил себе память по object) Дальше все интереснее и интереснее
Так называемые ошибки, которые допустил автор, перепутав пару раз метод и объект, не введут человека в заблуждение если тот, в свою очередь, изучил и понял предыдущие уроки.
Хочу выразить благодарность за вашу работу. Хожу на курсы для начинающих по Java,но там не могут объяснить ,как это делаете Вы. Я на ваших 10-15 минутных видео больше понимаю,чем на 2-часовых уроках.
Здравствуйте , есть результаты по обучению? интересно))
Отличные доходчивые уроки. Хотя первые минуты про Object и родительский класс было непонятно, но все встало на свои места после просмотра Урока №25. Даже подумалось, что 25-ый урок мог бы быть 24, а 24 - 25ым)
Спасибо тебе за такие хорошие уроки)) Ты очень доступно объясняешь, так что продолжай в том же духе)))
+Vladimir Tkach Пожалуйста)
Лучше наверно было сказать что попытка вывести объект на экран изначально выводит ссылку на объект, которая в свою очередь состоит из названия класса, "@" и уникального имени ссылки. А уникальное имя ссылки в свою очередь представляет собой хэш-код (неповторяющееся в классе численное значение).
Прекрасная подача довольно таки головоломкого материала,но прослушал несколько раз и все стало ясно.Спасибо за качественное обучение.
Спасибо, это было очень полезно и доступно. А то, что иногда перепутаны понятия не такая уж проблема, т.к. это вполне свойственно для человека.
сколько смотрю твои видосы уже, всегда понятно, кратко. Спасибо!
Очень доходчиво и понятно. Спасибо.
Непонятный цифры и буквы после собачки и названия класса - это адрес ячейки памяти в стеке где хранится ссылка на экземпляр класса
Я с этим сталкивался на практике также думал что происходит почему так нельзя , теперь понял
6:50 Сигнатура - это только имя метода и аргументы. И всё. public String в сигнатуру не входят
Немного поправлю: "Сигнатура метода - это имя метода плюс параметры (причем порядок параметров имеет значение). В сигнатуру метода не входит возвращаемое значение, а также бросаемые им исключения"
По поводу практики к этому курсу, на моем компе, разница в скорости работы кода получилась почти в (22 мс против 241 мс в пользу StringBuilder'a), это верный результат?
Очень классный урок, спасибо!
Йоу, спасибо, всё доходчиво, красавчик, спасибки спасибки!
Огромное спасибо. Очень доступно.
не смотря на оговорки объект-метод (даже моего не джуновского пока уровня хватает чтобы их онлайн понимать и исправлять в голове), объясняешь ты классно!
Привет, скажи, пожалуйста, мы ведь в методе String, который переопределил метод родителя, должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?
@@DolphinArtem как видишь да
@@DolphinArtem тут возвращается одно значение (строковое), а не int и String. в данном случае автор вернул строку, состоящую из name и age. name+" "+int - это одно строковое значение (имя пробел возраст). return в целом не может возвращать несколько переменных
Очень интересно. Спасибо!
Добрый день. Я еще только учусь. но вот переопределение метода toString не работает в JDK 16, или я что-то не так понимаю. Но переписав код ровно так же как в уроке, у меня в консоль выводится хешккод
Очень интерестно! Спасибо большое.
Перед переопределением метода toString не нужно было прописывать аннотацию override? Не умничаю, просто частично зацепил эту тему, стало интересно, правильно ли я понял её.
почему не используете аннотацию @Override при переопределени метода toString в классе Human?
Спасибо за работу!
Спасибо, мне помогло решить задачу :)
Попробовал вывести 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)
Кажется базовые ошибки, но все равно бывает допускаешь))
Спасибо, вы лучший.
Возможно этот урок стоило поместить после урока о наследовании, картинка бы лучше сложилась) имхо)
Спасибо за твой работу)
Подскажите пожалуйста, где можно закрепить пройденные уроки практикой?
Спасибо за урок!
вопрос следующий: как так получается, что в методе toString мы указываем тип возвращаемой переменной String, а смогли вернуть и String и int? return name+"."+age;
Java при конкатенации (сложении) автоматически конвертировала значение age в строку. То есть, из некоторого числа (например, 10), мы получили строку ("10").
спасибо ! понятно и полезно
Когда мы выводим обьект System.out.println(h1),- отображает не хеш код, а адрес памяти в котором находится объект.
А хэш код и выводится своим методом System.out.println(h1.hashCode);
docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
Да точно, хеш код просто в другом представлении, меня ввели в заблуждение. А возможно ли каким-то способом посмотреть адресс памяти?
Как в IntelliJ IDEA посмотреть класс Object? Какие клавиши надо нажимать?
Зажать и удерживать клавишу Ctrl, подвести курсор мыши к слову "Объект" и кликнуть по этому слову. Отпустить клавишу Ctrl.
начал изучать Джаву, напишите мне через год, узнать результат)
Щас ты как
@@Wdx-xyz учу, год не прошел еще))
а щас как , каждые два месяца писать будем
@@RimuSanLinux только через год напишу🤣
Сейчас как у тебя дела? 😺
Мы ведь в методе String,который переопределил метод родителя должны вернуть return’ ом строку, а автор в него положил еще и переменную age типа int. Так можно делать?
Как видишь да
@@SAHEYJ а почему, потому что это всё теперь строка?
@@DolphinArtem Да, это преобразование типов.
Чтобы лучше поразбираться, можно посмотреть результат вывода, с первого взгляда покажется странным
System.out.println(1 + 1 + "");
System.out.println("" + 1 + 1 );
а почему в методе toString для возврата не использовали переменные this.name и this.age ?
В смысле? Автор ссылался как раз таки на эти переменные, правда без использования ключевого слова this, которое в данном случае не нужно. Когда мы обычно используем ключевое слово this? Мы используем его тогда, когда при описании метода аргументы, которые метод будет принимать на вход, совпадают с названиями полей, к примеру, в сеттерах. Это нужно для того, чтобы мы внутри метода не присваивали значения, которые поступили в аргументы, локальным переменным. Да и вообще, если уж на то пошло, то ключевое слово this используется в контексте сеттеров, а у нас получился get-метод, который возвращает на место вызова метода значения полей name и age для каждого конкретного объекта на котором этот метод вызывается.
Да я понял, спасибо за ответ.
Пожалуйста!)
Есть вопрос, и он с последующи видео не стало яснее. В 03:06 ты сказал следующее:
"Все классы, которые мы делаем, если мы создаем из них объекты, то все эти классы должны быть не только классы, которые мы декларируем, но они еще должны быть просто объектами"
Ты мог бы ,пожалуйста, прояснить этот момент ? :)
Все классы которые ты делаешь это не только классы но ещё и объекты
У меня вопрос возник. Если мы создаем конструктор в который передаем аргументы например Имя и Возраст (String name, int age). Зачем тогда нужны сеттеры? Если в конструкторе и так присваиваются значения полям? Можно конечно в коде конструктора написать setName(name),но есть ли в этом смысл? Если просто можно все сделать через конструктор.
P.S.Спасибо за видео.
Аргументы конструктора нужны в том случае, когда мы хотим инициализировать поля name и age при создании объекта. А сеттеры нужны в том случае, если мы хотим поменять их в дальнейшем, по ходу программы, и поля name и age при этом private.
Представь себе создание персонажа рпг игры, где с самого начала у него должно быть имя и класс (например воин). Он обязательно должен иметь и то и другое, иначе он никто. Для этого аргументы конструктора.
Но по ходу игры, персонаж вдруг решил сменить имя и перепрофилироваться, скажем в мага. Вот за этим и нужен сеттер.
@@alexanderwicked8990 Спасибо большое,до этого тоже не понимал
На всякий случай добавлю, если кому то нужно.
Важно не забывать, что в сеттерах мы можем сделать проверку (напр. возраст не меньше нуля или не пустое поле имени).
И если мы сделаем конструктор, где есть прямой доступ к полям (возраст и имя) то пользователь может писать всё что угодно, это нарушение инкапсуляции.
Поэтому желательно в коде конструктора, использовать сеттеры, в которые передаются параметры конструктора.
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;
}
} //Сеттер с проверкой.
hashCode можно увидеть с помощью метода hashCode(), а не просто выводя переменную на экран
Хороший урок, все понятно, но есть вопрос не много не по теме, вы тоже Intellij IDEA пользуетесь, как и я, так вот вопрос по среде, может кто знает? Проблема заключается в том, что у меня не компилируется пакет, если в любом другом пакете есть ошибка, то есть, я учу язык по книгам, там есть задание, я его начинаю делать, что-то например не получается и я решаю оставить его на потом, что бы доделать, и создаю другой покет с классами и main и делаю его правильно, и когда пытаюсь проверить что я написал, то у меня показывает, что там где-то есть покет, который не доделан и пока я его не исправлю, то новый проверить не получается, приходится комментировать, но это жутко не удобно, потому что потом сложно найти покет который надо доделать, например в Eclips такого не было, ну не могу я сделать, оставил делаю другое и все компилируется, а не доделанная программка просто в списке пакетов подчеркивается красным и я прекрасно вижу что он не доделан и его легко найти. Помогите пожалуйста.
Закомментируй весь код класса, который ошибку компиляции выдаёт
так и делаю, но это пипец как не удобно, про этот кривой класс можно ничайно забыть и в итоге долго искать, в эклипсе например такой проблемы нет, там ну не работает класс, оставил его - он подчеркивается красным(и видно что его надо исправить), но компиляции других отдельных классов и покетов не мешает, вот если бы так и в идее можно было, была бы вообще идеальная среда
Денис Коораблёв согласен
Благодарю
разве String string это обьект ? это переменная с типом String
ссылка
String - встроенный класс
Просто у него есть укороченная запись
все является объектом))
спасибо!
Спасибо!
Кстати я вставил extends Object для наглядности и всё работает как прежде:
class Human extends Object{
ты нас оканчательно запутал!!!
Все классно, везде молодец, кроме того момента где сказал что функция возвращает хэш-код..
docs.oracle.com/javase/7/docs/api/java/lang/Object.html#toString()
Спасибо
👍👍👍
Без какой либо наглядной схемы с первого, даже второго раза понять почти не реально.......
Новичкам такое со слов не заходит...
Пересмотрите свой урок. Первое, лучше называть Object (именно обжект), а объект объектом, тогда меньше путаницы. То есть все объекты являются Object. Второе, очень часто вы называете методы объектами, что еще больше запутывает. А в целом, уроки очень познавательны, полезны и подробно изложены.
супер
расскажи про многопаточность
Патоки)
смотрю уроки вроде бы понятно, но как до дела доходит полнейшая каша. очень сводят с ума вызов методов и передача параметров. ну а так при большом желании разобраться во всем можно.
ТЕМА НЕ РАСКРЫТА ОЧЕНЬ СМУТНО ОБЪЯСНИЛ , СТАВЛЮ ОЦЕНКУ 3-
Этот урок и правда не очень. Много путаницы и подмены понятий.
Ужас, путаешь методы и обьекты, переменные и обьекты, называешь то одним словом то другим, пересмотри своё видео, это тихий ужас, как начинающий должен это понять?Я то понимаю, но ты путаешь людей.
Спасибо большое. Индусы нормально объяснять не могут :(
Спасибо!