Может ли byte[] == null в Java?

И вообще корректно ли

private void myMethod(byte[] bs){
    if (bs != null){
       ... some code ...
    }
}

Ответы (2 шт):

Автор решения: Podushkoved

Значение byte не может быть равным null, т. к. это примитивный тип данных.

Массив byte[] может (!!) быть равным null, т. к. это объект.



Ошибки нет:

public static void main(String[] args) {
    byte[] bs = null;

    myMethod(bs);
    myMethod(null);
}

private static void myMethod(byte[] bs) {
    if (bs != null) {
        System.out.println("not null");
    } else {
        System.out.println("null");
    }
}

Вывод:

null
null

А в таком случае будет ошибка компиляции, т. к. переменная не инициализирована:

public static void main(String[] args) {
    byte[] bs;
    myMethod(bs); // variable bs might not have been initialized
}
→ Ссылка
Автор решения: Sergei Buvaka

Есть восемь типов данных, поддерживаемых Java. Основные типы данных предопределены языком и названы по ключевому слову. К ним относятся:

  • byte

    Тип данных byte является 8-разрядным знаковым целым числом.

    Минимальная величина равна -128 (-27) Максимальное значение равно +127 (включительно) (27-1)

    По умолчанию – 0

  • short

    Тип данных short является 16-разрядным знаковым целым числом.

    Минимальное значение равно -32 768 (-215). Максимальная величина равна 32 767 (включительно) (215-1).

    По умолчанию — 0.

  • int

    В языке Java тип данных int является 32-разрядным знаковым целым числом.

    Минимальный размер int -2 147 483 648 (-231).

    Максимальная величина равна +2 147 483 647 (включительно)(231-1). .

    По умолчанию равно 0.

  • long

    Тип данных long является 64-разрядным знаковым целым числом.

    Минимальное значение равно -9 223 372 036 854 775 808 (-263).

    Максимальная величина +9 223 372 036 854 775 807 (включительно). (263-1).

    По умолчанию — 0L.

  • float

    Тип данных float является c одинарной точностью 32-битный IEEE 754 с плавающей точкой.

    По умолчанию — 0.0f.

  • double

    Тип данных double является c двойной точностью 64-битный IEEE 754 с плавающей точкой..

    По умолчанию — 0.0d.

  • boolean

    Тип данных boolean представляет собой один бит информации.

    Существует только два возможных значения: true и false.

    По умолчанию — false.

  • char

    Тип данных char является одним 16-разрядным символом Юникода.

    Минимальная величина равна «\u0000» (или 0).

    Максимальная величина равна «\uffff» (или 65535 включительно).

    По умолчанию - 0

У каждого примитивного типа есть значение по умолчанию. Все остальное в Java это ссылочные типы данных(в том числе и массивы) и все они могут быть null

→ Ссылка