Рубрики
Без рубрики

Что Такое Ноль? (Детка, Не Делай Мне Больно)

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

Существует два вида программистов. Те, у кого в их программах были ошибки, связанные с нулем, и те, кто только начинает свою карьеру. Страшный ноль, ноль, неопределенный… В большинстве языков программирования есть понятие “ничего”. Но что такое ничто? Вы когда-нибудь задумывались о нуле, что это такое на самом деле? А чем это не является? Давайте посмотрим, что означает null в Java.

Для начала отметим, что null в Java не является экземпляром какого-либо типа. Оператор сравнения типов Java, instanceof, определяется следующим образом :

Во время выполнения результат оператора instanceof является истинным, если значение реляционного выражения не равно нулю и ссылка может быть приведена к ссылочному типу без возникновения исключения ClassCastException. В противном случае результат будет ложным.

Таким образом, по определению null не является экземпляром чего-либо.

Однако спецификация языка Java, или JLS, определяет специальный нулевой тип . Тип null не имеет имени, и поэтому вы не можете объявить переменную типа null. Вы также ничего не можете привести к нулевому типу. Единственное возможное значение, которое когда-либо существовало (или нет?) для нулевого типа, – это сама нулевая ссылка. Для любого другого ссылочного типа вы всегда можете присвоить значение null. Как заявляет JLS:

Программист может игнорировать тип null и просто притворяться, что null – это просто специальный литерал, который может быть любого ссылочного типа.

В Java значение null равно нулю. Значение “ноль”. Также, по контракту, метод equals из java.lang. Объект указывает, что для любой ненулевой ссылки “ref” типа типа ref.equals(null) должен возвращать false. Таким образом, хотя null равно нулю, оно не равно ничему другому.

Как же тогда вы используете null? Вероятно, наиболее распространенным вариантом использования является указание на то, что запрошенная ссылка не существует или недоступна. Например, метод Java System.console() возвращает значение null, если консоль недоступна.

Значение Null также является значением по умолчанию для всех ссылочных переменных. Это означает, что для каждой ссылочной переменной, если вы не присвоите значение, оно будет равно нулю. Этот факт может быть использован, среди прочего, для реализации ленивой инициализации ваших полей, когда вы заполняете, возможно, дорогостоящие поля только тогда, когда они вам понадобятся в первый раз. В подобных случаях null используется для представления неинициализированного состояния.

В дополнение к ссылке на несуществующий объект или неинициализированное состояние, общие варианты использования null включают обозначение условия завершения (см. BufferedReader.readline();) и наличие неизвестного значения (например, сопоставление null определенному ключу на карте).

Сэр Тони Хоар классно заявил, что изобретение нуля было его ошибкой на миллиард долларов. Существуют способы обойти концепцию обнуляемости, например, используя Шаблон нулевого объекта . Что бы вы ни решили сделать, помните о своем коде, когда даже отдаленно возможно, что ссылка может быть нулевой. В противном случае ваше приложение может просто

Exception in thread "main" java.lang.NullPointerException
    at to.dev.WhatIsNull.main(WhatIsNull.java:42)

Оригинал: “https://dev.to/decoeur_/what-is-null-baby-dont-hurt-me-a8j”