배열이 null인지 / 비어 있는지 확인할 수 있습니까?
나는이 int
에 요소가없는 배열을하고 나는 그것이 비어 있는지 여부를 확인하기 위해 노력하고있어.
예를 들어, 아래 코드의 문이 왜 사실이 아닌가?
int[] k = new int[3];
if(k==null)
{
System.out.println(k.length);
}
null
배열과 빈 배열 사이 에는 중요한 차이점이 있습니다 . 에 대한 테스트입니다 null
.
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;
}
}
ArrayUtils.isNotEmpty(testArrayName)
패키지에서 org.apache.commons.lang3
배열이 null이거나 비어 있지 않은지 확인합니다.
길이를
int[] i = ...;
if (i.length == 0) { } // no elements in the array
동시에 null을 확인하는 것이 더 안전하지만 :
if (i == null || i.length == 0) { }
.net 배경 출신입니다. 그러나 java / c #은 거의 동일합니다.
기본이 아닌 유형 (귀하의 경우 배열)을 인스턴스화하면 null이 아닙니다.
예를 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");
}
int 배열은 0으로 초기화되므로 실제로 null을 포함하지 않습니다. Object의 배열 만 초기에 null을 포함합니다.
여기서 요점은 변수 k가 배열을 가리 키기 때문에 null이 아니라는 것입니다. 배열 자체가 비어있는 것은 중요하지 않습니다. 게시물의 null 테스트는 변수 k가 아무것도 가리 키지 않는 경우에만 참으로 평가됩니다.
나는 아래와 같이 테스트했다. 도움이 되었기를 바랍니다.
Integer[] integers1 = new Integer[10];
System.out.println(integers1.length); //it has length 10 but it is empty. It is not null array
for (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 = new Integer[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 배열에 대한 자세한 정보는 이 튜토리얼 을 참조하십시오 .
배열의 길이를 테스트 할 수 있습니다.
void foo(int[] data)
{
if(data.length == 0)
return;
}
길이를 찾아서 배열에 요소가 있는지 여부를 확인한 다음 if-else 문에 넣어 널인지 여부를 확인할 수도 있습니다.
int[] k = new int[3];
if(k.length == 0)
{
//do something
}
public boolean empty() {
boolean isEmpty = true;
int i = 0;
for (int j = 0; j < array.length; j++) {
if (array[j] != 0) {
i++;
}
}
if (i != 0) {
isEmpty = false;
}
return isEmpty;
}
이것은 int 배열이 비어 있는지 확인하는 것과 비슷합니다. 배열의 정수가 실제로 0이면 작동하지 않습니다. {1,2,3}에서 작동하며 {2,0}이면 여전히 false를 반환하지만 {0}는 true를 반환합니다.
배열이 null인지 비어 있는지 확인하는 방법도 org.apache.commons.lang에 있습니다.
import org.apache.commons.lang.ArrayUtils;
ArrayUtils.isEmpty(array);
나는 당신이 원하는 것은
int[] k = new int[3];
if (k != null) { // Note, != and not == as above
System.out.println(k.length);
}
당신은 그것을 새로 만들었으므로 결코 null이 될 수 없습니다.
참고 URL : https://stackoverflow.com/questions/2369967/how-can-i-check-whether-an-array-is-null-empty
'IT' 카테고리의 다른 글
부모 활동에서 Fragment 메소드 호출 (0) | 2020.07.25 |
---|---|
프로그래밍 방식으로 ActionBar의 MenuItem 아이콘을 변경하는 방법 (0) | 2020.07.25 |
C # 스위치 명령문에서 변수 선언 (0) | 2020.07.25 |
특정 테이블을 참조하는 모든 저장 프로 시저를 발광하는 방법 (0) | 2020.07.25 |
유닉스의 'ls'이름순 (0) | 2020.07.25 |