Действительно ли пустым указателем является Объект?

Это не самый быстрый или самый короткий путь, но я думаю, что это очень читаемо. Таким образом, я сделал бы что-то вроде этого:

bool is_power_of_2(int n)
  int bitCounter=0;
  while(n) {
    if ((n & 1) == 1) {
      ++bitCounter;
    }
    n >>= 1;
  }
  return (bitCounter == 1);
}

Это работает, так как двоичный файл основан на полномочиях два. Любое число только с одним набором битов должно быть питанием два.

119
задан jason 3 February 2010 в 14:10
поделиться

13 ответов

If null were an Object, it would support the methods of java.lang.Object such as equals(). However, this is not the case - any method invocation on a null results in a NullPointerException.

And this is what the Java Language Specification has to say on this topic:

There is also a special null type, the тип выражения null, имеющий без имени. Поскольку нулевой тип не имеет имя, невозможно объявить переменная нулевого типа или для приведения к нулевому типу. Пустая ссылка единственное возможное значение выражение нулевого типа. Нулевой ссылка всегда может быть приведена к любому ссылочный тип. На практике программист может игнорировать нулевой тип и просто представьте, что null - это просто специальный литерал, который может быть любым ссылочный тип.

Я думаю, это можно свести к "null - это особенный".

166
ответ дан 24 November 2019 в 01:46
поделиться
Object foo = null;
System.out.println(foo.toString()); 

The first line shows null can be assigned to type Object, but the second line will demonstrate it is certainly not an Object and eventually results in a java.lang.NullPointerException

2
ответ дан 24 November 2019 в 01:46
поделиться

Является ли значение null экземпляром java.lang.Object ? Нет.

Является ли null объектом ? зависит от определения « равно ».

3
ответ дан 24 November 2019 в 01:46
поделиться

Java обрабатывает объекты через ссылки. Null - это нарушение объектно-ориентированности Java, поскольку оно понижает вас ниже объектно-ориентированного уровня. Нет, это не объект, это ЗНАЧЕНИЕ ссылки. И это не имеет ничего общего с объектными парадигмами, но относится к встроенным технологиям Java, которые позволяют объекты.

4
ответ дан 24 November 2019 в 01:46
поделиться

Согласно Спецификации Java ,

Также существует специальный нулевой литерал который можно использовать как значение для любого ссылочный тип. null может быть назначен к любой переменной, кроме переменных примитивные типы. Мало тебя может работать с нулевым значением за пределами тестирование на его наличие. Следовательно, null часто используется в программах как маркер, чтобы указать, что какой-то объект недоступен.

4
ответ дан 24 November 2019 в 01:46
поделиться

No. Even if it was it was, it is useless as it does not have any methods or fields.

5
ответ дан 24 November 2019 в 01:46
поделиться

Нет, это не экземпляр класса или класса. Это ссылка ни на что.

Изменить : не читал спецификацию, поэтому приведенное выше может быть неточным на 100%.

9
ответ дан 24 November 2019 в 01:46
поделиться

Нет, это не объект.

12
ответ дан 24 November 2019 в 01:46
поделиться

Нулевое значение означает отсутствие объекта.

12
ответ дан 24 November 2019 в 01:46
поделиться

Абсолютно нет: null instanceof Object возвращает false.

28
ответ дан 24 November 2019 в 01:46
поделиться

Согласно спецификации Java , null - это тип, который может быть назначен объектной переменной (как значение, как указано в комментарии) . Однако вы не можете создавать или создавать переменные этого типа, вы должны использовать литерал null , предоставленный компилятором.

31
ответ дан 24 November 2019 в 01:46
поделиться

As explained in the chapter 4.1 The Kinds of Types and Values of the Java Language Specification, null is a type which has one value, the null reference (and is represented by the literal null):

There is also a special null type, the type of the expression null, which has no name. Because the null type has no name, it is impossible to declare a variable of the null type or to cast to the null type. The null reference is the only possible value of an expression of null type. The null reference can always be cast to any reference type. In practice, the programmer can ignore the null type and just pretend that null is merely a special literal that can be of any reference type.

You might want to read about the Null Object Pattern (that I don't recommend) though. See the C2 Wiki or Wikipedia for more on this pattern.

5
ответ дан 24 November 2019 в 01:46
поделиться

No, is not an object as null instanceof Object will always return false also there is only one null, not one for each class.

4
ответ дан 24 November 2019 в 01:46
поделиться
Другие вопросы по тегам:

Похожие вопросы: