Java 메서드의 가변 매개변수 유형 인스턴스 분석

Java 방법 중의 가변 매개 변수 유형은 매우 중요한 개념으로 매우 광범위하게 응용되고 있다.본고는 실례 형식으로 이것에 대해 분석하고자 한다.구체적으로 다음과 같습니다.
일반적으로 많은 자바 초보자들은 아래의 이 코드를 볼 때 한 가지 질문을 한다. dealArray 방법의 세 가지 작은 점은 무엇입니까?

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
     
  } 
   
  public static void main(String args[]){ 
     
  } 
} 

이것이 바로 본고에서 토론하고자 하는 문제이다. 가변적인 매개 변수 유형은 부정확한 매개 변수 유형이라고도 부른다.영문 줄임말은 varargus입니다. 복원하면variableargument type입니다.그것의 이름을 통해 이 방법은 매개 변수를 수신할 때 개수가 정해지지 않는다는 것을 직접적으로 알 수 있다.좋아, 지금 이 방법을 먼저 사용해 보자.코드 및 출력 보기:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray(); 
    dealArray(1); 
    dealArray(1, 2, 3); 
  } 
} 

출력:
1  
1 2 3  
main 방법의 호출을 통해 이 가변 매개 변수는 매개 변수가 없을 수도 있고 길지 않을 수도 있음을 알 수 있다.여기를 보면 이 부정확한 길이의 매개 변수는 사실 수조 매개 변수와 매우 비슷하다는 것을 알 수 있을 것이다.사실 이런 일도 사실이다.컴파일러는 조용히 이 마지막 인삼을 하나의 수조 인삼으로 바꾸고 컴파일된class 파일에 기호를 하여 이것은 실삼 개수가 변할 수 있는 방법이라는 것을 나타낸다.코드 보기:

dealArray(); //dealArray(int[] intArray{}); 
dealArray(1); //dealArray(int[] intArray{1}); 
dealArray(1, 2, 3); //dealArray(int[] intArray{1, 2, 3}); 

여기까지 말하면 이 가변 파라미터가 바로 수조 파라미터인지 검증해 볼 수 있다.코드 보기:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void dealArray(int[] intArray){// Duplicate method dealArray(int[]) in type TestVarArgus  
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray();  
    dealArray(1); 
    dealArray(1, 2, 3); 
  } 
} 

위의 코드를 통해 알 수 있듯이 이 두 가지 방법은 충돌하여 다시 불러올 수 없다.여기까지 와서 재미있는 실험을 하나 더 하자.
코드 1:

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    int[] intArray = {1, 2, 3}; 
     
    dealArray(intArray); // ,  
  } 
} 
코드 2:

public class TestVarArgus { 
  public static void dealArray(int[] intArray){ 
    for (int i : intArray) 
      System.out.print(i +" "); 
     
    System.out.println(); 
  } 
   
  public static void main(String args[]){ 
    dealArray(1, 2, 3); //  
  } 
} 
위의 두 단락 코드에서 알 수 있듯이 가변 매개 변수는 수조 클래스 매개 변수를 호환하지만, 수조 클래스 매개 변수는 가변 매개 변수를 호환할 수 없다.사실 두 번째 코드에 대해 말하자면, 컴파일러는 어떤 변환이 가능한지 모른다. 컴파일러는 보기에 dealArray (int, int, int) 클래스의 방법을 정의해야 한다.따라서 수조류 파라미터의 dealArray 방법을 일치시킬 수 없습니다.
Java 메서드가 가변 매개변수를 수신하는 경우 다음 코드를 살펴보겠습니다.

public class TestVarArgus { 
  public static void dealArray(int count, int... intArray){ 
     
  } 
   
  public static void dealArray(int... intArray, int count){// ,  
     
  } 
   
  public static void main(String args[]){ 
      
  } 
} 

이 코드는 가변 매개 변수 유형은 매개 변수 목록의 마지막 항목이 되어야 하며, 정해진 길이의 매개 변수 앞에 놓을 수 없다는 것을 설명한다.우선순위라는 단어가 떠올랐을 거예요.정확한 설명이 없기 때문에 단지 이런 규정일 뿐입니다. 여기서'우선순위'라는 단어를 빌려 이해할 수 있습니다. 아래의 코드를 보십시오.

public class TestVarArgus { 
  public static void dealArray(int... intArray){ 
    System.out.println("1"); 
  } 
   
  public static void dealArray(int count, int count2){ 
    System.out.println("2"); 
  } 
   
  public static void main(String args[]){ 
    dealArray(1, 2); 
  } 
} 

코드를 붙이면 출력 2가 1이 아닌 것으로 추정된다.여기에 기억해야 할 것은 정해진 길이와 일치하는 방법이 있다면 우선적으로 이 방법과 일치해야 한다는 것이다.부정확한 파라미터를 포함하는 그 재부팅 방법은 마지막에 선택되었다.
마지막으로main 방법의 매개 변수는 하나의 수조 유형이라는 것을 모두가 알고 있다. 그러면 이것은 사실 부정확한 매개 변수 유형으로 바꿀 수 있다.번역 오류가 있는지 없는지 한번 해 보세요.
본고에서 기술한 것이 여러분의 자바 프로그램 설계에 대한 학습에 어느 정도 참고 가치가 있다고 믿습니다.

좋은 웹페이지 즐겨찾기