если вам нужно проверить как нулевое значение, так и длину 0, важно сначала проверить нулевое значение, как вы сделали, чтобы избежать возможной ошибки нулевого указателя
Билл Милагро
6
Метод для проверки массива на нулевой или пустой также присутствует на org.apache.commons.lang:
Я из .net фона. Однако java / c # более / менее одинаковы.
Если вы создаете экземпляр не примитивного типа (массив в вашем случае), он не будет нулевым.
Например, int[] numbers = new int[3];
в этом случае пространство выделяется, и каждый элемент имеет значение по умолчанию 0.
Это будет null, когда ты этого не сделаешь new.
например
int[] numbers =null;// changed as per @Joachim's suggestion.if(numbers ==null){System.out.println("yes, it is null. Please new it up");}
Что делать, если я должен проверить NULL на целое число
Ankit Sachan
1
Вы не можете проверить на ноль с примитивами, такими как int.
объекты
2
зависит от того, где вы объявили это, если как член класса, то да, он инициализируется с нулями. но когда объявлено локально внутри метода, я считаю, что это другой случай ... вы должны назначить начальное значение самостоятельно. я полагаю. просто мысль!
Ультра Джон
2
Дело здесь очень просто в том, что переменная k не равна нулю, потому что она указывает на массив. Неважно, что сам массив пуст. Нулевой тест в вашем посте будет иметь значение true, только если переменная k ни на что не указывает.
Integer[] integers1 =newInteger[10];System.out.println(integers1.length);//it has length 10 but it is empty. It is not null arrayfor(Integer integer : integers1){System.out.println(integer);//prints all 0s}//But if I manually add 0 to any index, now even though array has all 0s elements//still it is not empty// integers1[2] = 0;for(Integer integer : integers1){System.out.println(integer);//Still it prints all 0s but it is not empty//but that manually added 0 is different}//Even we manually add 0, still we need to treat it as null. This is semantic logic.Integer[] integers2 =newInteger[20];
integers2 =null;//array is nullified// integers2[3] = null; //If I had int[] -- because it is priitive -- then I can't write this line. if(integers2 ==null){System.out.println("null Array");}
intМассив без элементов не обязательно null. Это будет только в том nullслучае, если он еще не выделен. Видеть это руководство для получения дополнительной информации о массивах Java.
Это так же близко, как я проверял, пустой ли массив int. Хотя это не будет работать, когда целые числа в массиве фактически равны нулю. Он будет работать для {1,2,3}, и все равно вернет false, если {2,0}, но {0} вернет true
Вы также можете проверить, есть ли какие-либо элементы в массиве, узнав его длину, а затем поместить его в оператор if-else, чтобы проверить, является ли он пустым.
int[] k =newint[3];if(k.length ==0){//do something}
Ответы:
Есть ключевое различие между
null
массивом и пустым массивом. Это тест дляnull
.«Пусто» здесь не имеет официального значения. Я выбираю определять пустой как имеющий 0 элементов:
Альтернативное определение «пусто», если все элементы
null
:или
источник
obj !- null
, вероятно, имел в видуobj != null
null
это другой тип.ArrayUtils.isNotEmpty(testArrayName)
из пакетаorg.apache.commons.lang3
гарантирует, что массив не является нулевым или пустымисточник
Посмотрите на его длину:
Хотя безопаснее проверять на ноль одновременно:
источник
Метод для проверки массива на нулевой или пустой также присутствует на org.apache.commons.lang:
источник
Я из .net фона. Однако java / c # более / менее одинаковы.
Если вы создаете экземпляр не примитивного типа (массив в вашем случае), он не будет нулевым.
Например,
int[] numbers = new int[3];
в этом случае пространство выделяется, и каждый элемент имеет значение по умолчанию 0.
Это будет
null
, когда ты этого не сделаешьnew
.например
источник
numbers
еще не было инициализировано. «Неинициализированный» иnull
не одно и то же.int[] numbers
изменился наint[] numbers == null
; В C # это не так.Массив int инициализируется нулем, поэтому он фактически никогда не будет содержать нулей. Изначально только массивы объектов будут содержать нуль.
источник
Дело здесь очень просто в том, что переменная k не равна нулю, потому что она указывает на массив. Неважно, что сам массив пуст. Нулевой тест в вашем посте будет иметь значение true, только если переменная k ни на что не указывает.
источник
Я проверил, как показано ниже. Надеюсь, поможет.
источник
int
Массив без элементов не обязательноnull
. Это будет только в томnull
случае, если он еще не выделен. Видеть это руководство для получения дополнительной информации о массивах Java.Вы можете проверить длину массива:
источник
Это так же близко, как я проверял, пустой ли массив int. Хотя это не будет работать, когда целые числа в массиве фактически равны нулю. Он будет работать для {1,2,3}, и все равно вернет false, если {2,0}, но {0} вернет true
источник
В Java 8+ это достигается с помощью метода allMatch для потоков.
Для примитива:
Для объекта:
источник
Я верю, что ты хочешь
Вы обновили его, так что он никогда не будет нулевым.
источник
Вы также можете проверить, есть ли какие-либо элементы в массиве, узнав его длину, а затем поместить его в оператор if-else, чтобы проверить, является ли он пустым.
источник