찾다

 >  Q&A  >  본문

赋值 - Java数组初始化,这三种方式有什么区别?

形式1:

Object[] params = null;
params = {1, 2, 3, 4};

形式2:

Object[] params = {1, 2, 3, 4};

形式3:

Object[] params = new Object[]{1, 2, 3, 4};

1.为什么第一种形式就是错的(编译阶段就报错),而第二种就可以呢?(第三种很显然)
2.第二种和第三种,哪种初始化方式更优呢?(或者有更好的?)

天蓬老师天蓬老师2769일 전942

모든 응답(4)나는 대답할 것이다

  • 迷茫

    迷茫2017-04-18 09:51:39

    우선 배열 초기화를 사용할 때 배열의 길이를 결정해야 합니다. 즉, 배열의 길이는 변경할 수 없습니다.
    JAVA에서 배열을 생성하는 방법에는 두 가지가 있습니다.
    (1) 정적 생성 예:

    으아악

    (2)1
    과 같은

    의 동적 생성 으아악

    2

    으아악

    3

    으아악

    그리고 질문자가 언급한 방법은

    으아악

    오류 1: 빈 배열 매개변수를 직접 생성하고 있습니다. 즉, 비어 있고 배열의 길이를 변경할 수 없습니다. 이때 데이터를 추가하면 빈 배열은 당연히 아무것도 추가할 수 없습니다. 뭔가 잘못될 겁니다. 위에서 언급한 두 번째 방법과 동일한 작업을 수행하고 길이가 4인 배열을 다시 만들고 새 배열의 주소를 params에 제공해야 합니다. 즉, Object[] params = null; 4]; 이런 식으로 생성할 수 있습니다.
    오류 2: 배열 초기화는 정의가 완료된 후에만 연속적으로 추가할 수 있습니다.

    으아악

    그 이후에 데이터를 추가하려면 배열 첨자에 따라 하나씩만 추가하면 됩니다.

    으아악

    그러나 직접 매개변수는 아님 = {1, 2, 3, 4};

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 09:51:39

    양식 1

    으아아아

    이 선언 방법은 실제로 Java 초기화 배열의 구문 설탕 입니다. 소위 구문 설탕은 실제 실행 시 Java가 이를 형식 3으로 변환합니다. ,

    으아아아

    Java는 형식 2와 유사한 구문 설탕을 제공하지 않으므로 이러한 방식으로 사용하는 것은 불법입니다.

    회신하다
    0
  • 迷茫

    迷茫2017-04-18 09:51:39

    으아아아

    A. 포스터는 크게 걱정할 필요가 없다고 규정하고 있습니다.
    B. 배열 요소를 미리 알고 있으면 Object[] params = {1, 2, 3, 4};를 사용하여 배열 코드를 선언하는 것이 더 간결합니다. 더 좋은 표현은 없습니다.

    회신하다
    0
  • 巴扎黑

    巴扎黑2017-04-18 09:51:39

    첫 번째 선언 방법이 올바르지 않습니다.
    Object[] params = new Object[length]여야 합니다.

    두 번째는 제가 주로 사용하는 것입니다

    회신하다
    0
  • 취소회신하다