Я имею int
массив, который не имеет никаких элементов и я пытаюсь проверить, пусто ли это.
Например, почему находится оператор "if" в ниже кода, никогда не верного?
int[] k = new int[3];
if(k==null)
{
System.out.println(k.length);
}
Есть ключевое различие между нулевым
массивом и пустым массивом . Это тест на нуль
.
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;
}
}
Массив int
без элементов не обязательно нулевой
. Он будет только нулевым
, если он еще не выделен. См. в этом руководстве для получения дополнительной информации о массивах Java.
Вы можете проверить длину массива:
void foo(int[] data)
{
if(data.length == 0)
return;
}
Я считаю, что вам нужно
int[] k = new int[3];
if (k != null) { // Note, != and not == as above
System.out.println(k.length);
}
Вы обновили его, поэтому он никогда не будет нулевым.
Посмотрите на его длину:
int[] i = ...;
if (i.length == 0) { } // no elements in the array
Хотя безопаснее одновременно проверять значение null:
if (i == null || i.length == 0) { }
Я из .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");
}
Массив int инициализируется нулем, поэтому он никогда не будет содержать нулей. Только массивы Object'ов будут содержать нули изначально.