선언에 없는 경우 어레이 초기화 구문
쓸 수 있다:
AClass[] array = {object1, object2}
또, 다음과 같이 쓸 수 있습니다.
AClass[] array = new AClass[2];
...
array[0] = object1;
array[1] = object2;
쓸 수 없어요.
AClass[] array;
...
array = {object1, object2};
Java에 의해 차단되는 이유는 무엇입니까?
어떻게 대처해야 할지 알지만, 가끔은 그게 더 간단할 거예요.
예를 들어 다음과 같습니다.
public void selectedPointsToMove(cpVect coord) {
if (tab == null) {
if (arePointsClose(coord, point1, 10)) {
cpVect[] tempTab = {point1};
tab = tempTab;
} else if (arePointsClose(point2, coord, 10)) {
cpVect[] tempTab = {point2};
tab = tempTab;
} else {
cpVect[] tempTab = {point1,point2};
tab = tempTab;
}
}
}
이 간단한 질문은 Java에서 어레이를 사용하는 방법을 배운 이후 계속 신경이 쓰입니다.
Java에 의해 차단되는 이유는 무엇입니까?
자바 디자이너에게 물어봐야 합니다.그 제한에는 미묘한 문법적 이유가 있을 수 있다.어레이 작성/초기화 구성 중 일부는 Java 1.0이 아니었고 (IRC)는 Java 1.1에 추가되었습니다.
하지만 "왜"는 중요하지 않다.거기에 제한이 있고, 당신은 그것을 감수해야 합니다.
어떻게 대처해야 할지 알지만, 가끔은 그게 더 간단할 거예요.
다음과 같이 쓸 수 있습니다.
AClass[] array;
...
array = new AClass[]{object1, object2};
그 이유에 대해 답변해 보겠습니다.Java 어레이는 ArrayList와 같은 보다 동적인 클래스에 비해 매우 단순하고 기본적인 것입니다.Java는 선언 시 어레이에 할당해야 하는 메모리 양을 알고 싶어 합니다.Array List는 훨씬 더 동적이고 크기가 시간에 따라 달라질 수 있습니다.
어레이를 2의 길이로 초기화하고 나중에 3의 길이가 필요한 경우 기존 어레이를 버리고 완전히 새로운 어레이를 생성해야 합니다.그래서 'new' 키워드입니다.
첫 번째 두 가지 예에서는 선언 시 할당해야 할 메모리 양을 알려 줍니다.세 번째 예에서는 어레이 이름이 아무것도 아닌 포인터가 되므로 초기화할 때 적절한 양의 메모리를 할당하기 위해 명시적으로 새 어레이를 생성해야 합니다.
첫 번째 예시는 (누군가 더 잘 알고 있다면 정정해 주십시오)
AClass[] array = {object1, object2}
실제로 의미하는 것은
AClass[] array = new AClass[]{object1, object2};
그러나 Java 디자이너가 한 일은 선언 시 어레이를 생성하면 더 빨리 쓸 수 있도록 하는 것이었습니다.
권장되는 회피책이 좋습니다.실행 시 시간 또는 메모리 사용량이 중요한 경우 어레이를 사용합니다.중요하지 않고 알기 쉽고 사용하기 쉬운 코드를 원하는 경우 Array List를 사용합니다.
왜 그런지는 대답할 수 없어요.
하지만 역동적인 것을 원한다면 Collection Array List를 고려해 보는 것은 어떨까요?
Array List는 모든 개체 유형일 수 있습니다.
또, 강제적으로 어레이로서 사용하고 싶은 경우는, toArray() 메서드를 사용할 수 있습니다.
예를 들어 다음과 같습니다.
ArrayList<String> al = new ArrayList<String>();
al.add("one");
al.add("two");
String[] strArray = (String[]) al.toArray(new String[0]);
이게 도움이 됐으면 좋겠어요.
것을 을 위해new AClass[] { ... }
여기설탕이 .
public AClass[] c(AClass... arr) { return arr; }
이 작은 기능을 원하는 대로 사용할 수 있습니다.
AClass[] array;
...
array = c(object1, object2);
언급URL : https://stackoverflow.com/questions/5387643/array-initialization-syntax-when-not-in-a-declaration
'programing' 카테고리의 다른 글
진동 시뮬레이션(예: 에서)웹페이지에서 마우스로 파킨슨병)을 앓고 있습니까? (0) | 2022.12.30 |
---|---|
PDO 쿼리에서 배열을 IN() 조건에 바인드할 수 있습니까? (0) | 2022.12.30 |
요소를 제거하지 않고 세트에서 요소를 가져오려면 어떻게 해야 합니까?MySQL 용어 "제약"과 "외부 키"의 차이점 (0) | 2022.12.30 |
Python에서 로지스틱 Sigmoid 함수를 계산하는 방법은 무엇입니까? (0) | 2022.12.30 |
MariaDB의 높은 메모리 사용량을 수정하는 방법 (0) | 2022.12.30 |