Size: a a a

2020 February 24

ДЧ

Денис Чиканов in learn.java
Sergei
Понятно, никакой Америки это не открывает, и if (s == null) все умеют.

Но если вдуматься - это всё какой-то костыль.
Ну да, в джаве и джвм немного костыльная типизация в целом, но это можно понять и с колокольни language design в 90-х, и с точки зрения попыток сохранить относительную универсальность языка и платформы.
источник

DS

Dmitriy Shilnikov in learn.java
Sergei
Java не одинока, конечно. Ежели сравнивать с языками, где есть адресная арифметика - типизация Java вообще идеальна.
Ну в C++, вроде, никто вид не делает, что null - это волшебное значение другого типа.
источник

DS

Dmitriy Shilnikov in learn.java
Насколько я помню, в микрософтовской реализации раньше было #define NULL 0
источник

DS

Dmitriy Shilnikov in learn.java
А Страуструп призывал проверять на == 0
источник

Э

Эд in learn.java
короче, не получилось у меня дебаг
источник

Э

Эд in learn.java
IDEA говорит, что не может подсоединиться к порту
источник

S

Sergei in learn.java
Dmitriy Shilnikov
А Страуструп призывал проверять на == 0
Там (C++) тоже не всё гладко - при сравнении 0 с указателями этот "ноль" не является именно "число ноль" - в зависимости от платформы "нулевой"/"невозможный" адрес не обязан располагаться прям в начале памяти.
источник

S

Sergei in learn.java
Dmitriy Shilnikov
А Страуструп призывал проверять на == 0
И чтобы частично разрулить нагромождение костылей ввели литерал nullptr (не припомню, правда, в какой редакции стандарта C++).
источник

S

Sergei in learn.java
Но это уже всё оффтопик, я думаю.
источник

DS

Dmitriy Shilnikov in learn.java
Sergei
И чтобы частично разрулить нагромождение костылей ввели литерал nullptr (не припомню, правда, в какой редакции стандарта C++).
Это уже новые веяния ) Когда я С++ учил, там ещё не было такого )
источник

DS

Dmitriy Shilnikov in learn.java
Я предполагаю, что в джаве, по факту, там тоже просто указатель с определённым значением в рантайме
источник

DS

Dmitriy Shilnikov in learn.java
Вряд ли что-то умнее можно придумать
источник

S

Sergei in learn.java
Dmitriy Shilnikov
Это уже новые веяния ) Когда я С++ учил, там ещё не было такого )
У меня та же история :)
источник

S

Sergei in learn.java
Спасибо всем, кто поддержал дискуссию, и помог разобраться в тонкостях вопроса!
источник

ДЧ

Денис Чиканов in learn.java
Dmitriy Shilnikov
Я предполагаю, что в джаве, по факту, там тоже просто указатель с определённым значением в рантайме
В джаве ты как минимум хранишь метаинформацию о типе, и для переменной, и для объекта-значения.
источник

DS

Dmitriy Shilnikov in learn.java
Денис Чиканов
В джаве ты как минимум хранишь метаинформацию о типе, и для переменной, и для объекта-значения.
А где хранится метаинформация о значении? Там разве не просто указатель лежит на заголовок?
источник

ДЧ

Денис Чиканов in learn.java
Dmitriy Shilnikov
А где хранится метаинформация о значении? Там разве не просто указатель лежит на заголовок?
Может и просто указатель, но не на голые данные, как мы выяснили. :)
источник

DS

Dmitriy Shilnikov in learn.java
Денис Чиканов
Может и просто указатель, но не на голые данные, как мы выяснили. :)
Ну вот конкретно null pointer же наверняка просто указывает на какую-то конкретную область памяти?
источник

DS

Dmitriy Shilnikov in learn.java
В объекте просто места, вроде, нет, куда записать можно, что какая-то ссылка равна null.
источник

ДЧ

Денис Чиканов in learn.java
Dmitriy Shilnikov
Ну вот конкретно null pointer же наверняка просто указывает на какую-то конкретную область памяти?
Нуллпойнтер да, ссылается на какой-то заданный имплементацией ВМ "специальный" адрес памяти.
источник