JavaRush /Курсы /Harvard CS50 /Почему в Java нет указателей

Почему в Java нет указателей

Harvard CS50
4 уровень , 9 лекция
Открыта

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

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

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

Одним словом, указатели — это как атомная энергия. Мощно, но очень опасно. Поэтому практически во всех более поздних языках эту «атомную энергию» заменили более экологичными средствами. Так, в Java есть ссылки и к ним можно обращаться, но адресная арифметика в этом языке отсутствует. То есть изменить что-то в ячейке памяти обращаясь к ней непосредственно не получится. В большинстве случаев это просто отлично. Но что в таком случае дают ссылки в Java? Много всего:

  • Доступ к полям объекта
  • Вызов методов
  • Операция приведения типа
  • Конкатенация строк (оператор '+')
  • Проверка принадлежности к определенному типу – оператор instanceof
  • Операции сравнения ссылки – '==' и '!='
  • Условный оператор ? :
  • Во многом благодаря своей безопасности язык Java получил такое широкое распространение и стал самым широко используемым языком программирования в мире.

    Хотите знать о Java больше? Подписывайтесь на курс JavaRush и учитесь параллельно с CS50!

    Комментарии (9)
    ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
    ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
    YesOn Уровень 13
    12 июня 2023
    Java мне нравится намного больше, чем Си)
    MartyMcAir Уровень 41
    20 мая 2020
    так значит по настоящему хакерские штуки возможны, только на языке Cи и ему подобных _ т.е. те в которых есть адресная арифметика..!?
    Никита Уровень 10
    22 декабря 2020
    чтобы быть хакером нужно в первую очередь сети учить
    serand Уровень 8
    25 октября 2021
    не хакером ,я бы сказал реинженером
    Даниил Уровень 41 Master
    14 февраля 2020
    Да после Java пользоваться Си как будто охотиться после ружья копьём! Это говорит тот кто сначала прошёл Javarush, а потом начал знакомиться с Си на CS50.
    24 февраля 2020
    Да, после Java, пользоваться ассемблером как на мамонта с голыми руками).
    Samurai Уровень 10
    7 марта 2021
    Долго добирались до 41 уровня ?
    Даниил Уровень 41 Master
    7 марта 2021
    Год и месяц, но примерно месяц в начале я читал Head First Java книгу, ну и занимался я то по 5-8 часов каждый день, то вообще никак. И так в среднем месяц через месяц
    Samurai Уровень 10
    25 марта 2021
    Спасибо за ответ