undefined

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

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

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

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

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

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

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

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

    Комментарии (7)
    Чтобы просмотреть все комментарии или оставить свой,
    перейдите в полную версию
    MartyMcAir 41 уровень
    20 мая 2020
    так значит по настоящему хакерские штуки возможны, только на языке Cи и ему подобных _ т.е. те в которых есть адресная арифметика..!?
    Даниил 41 уровень Master
    14 февраля 2020
    Да после Java пользоваться Си как будто охотиться после ружья копьём! Это говорит тот кто сначала прошёл Javarush, а потом начал знакомиться с Си на CS50.