Как я могу проверить, является ли массив пустым / пустой?

Я имею int массив, который не имеет никаких элементов и я пытаюсь проверить, пусто ли это.

Например, почему находится оператор "if" в ниже кода, никогда не верного?

int[] k = new int[3];

if(k==null)
{
    System.out.println(k.length);
}
120
задан Dukeling 12 September 2017 в 18:15
поделиться

6 ответов

Есть ключевое различие между нулевым массивом и пустым массивом . Это тест на нуль .

int arr[] = null;
if (arr == null) {
  System.out.println("array is null");
}

«Пустой» здесь не имеет официального значения. Я предпочитаю определять пустой как имеющий 0 элементов:

arr = new int[0];
if (arr.length == 0) {
  System.out.println("array is empty");
}

Альтернативное определение «пустого» - это если все элементы null :

Object arr[] = new Object[10];
boolean empty = true;
for (int i=0; i<arr.length; i++) {
  if (arr[i] != null) {
    empty = false;
    break;
  }
}

или

Object arr[] = new Object[10];
boolean empty = true;
for (Object ob : arr) {
  if (ob != null) {
    empty = false;
    break;
  }
}
191
ответ дан 24 November 2019 в 01:36
поделиться

Массив int без элементов не обязательно нулевой . Он будет только нулевым , если он еще не выделен. См. в этом руководстве для получения дополнительной информации о массивах Java.

Вы можете проверить длину массива:

void foo(int[] data)
{
  if(data.length == 0)
    return;
}
0
ответ дан 24 November 2019 в 01:36
поделиться

Я считаю, что вам нужно

int[] k = new int[3];

if (k != null) {  // Note, != and not == as above
    System.out.println(k.length);
}

Вы обновили его, поэтому он никогда не будет нулевым.

-1
ответ дан 24 November 2019 в 01:36
поделиться

Посмотрите на его длину:

int[] i = ...;
if (i.length == 0) { } // no elements in the array

Хотя безопаснее одновременно проверять значение null:

if (i == null || i.length == 0) { }
17
ответ дан 24 November 2019 в 01:36
поделиться

Я из .net. Однако java / c # более / менее одинаковы.

Если вы создаете экземпляр непримитивного типа (в вашем случае массив), он не будет нулевым.
например. int [] numbers = new int [3];
В этом случае пространство выделяется, и каждый элемент имеет значение по умолчанию 0.

Это будет null , когда вы не новый это вверх.
например.

int[] numbers = null; // changed as per @Joachim's suggestion.
if (numbers == null)
{
   System.out.println("yes, it is null. Please new it up");
}
4
ответ дан 24 November 2019 в 01:36
поделиться

Массив int инициализируется нулем, поэтому он никогда не будет содержать нулей. Только массивы Object'ов будут содержать нули изначально.

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

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