자바 의 가 변 매개 변수 목록

3746 단어 자바eclipseC++cC#

class C{
	
	public static void main(String[] args) {
		C c=new C();
		
		c.test(null);
		
		//       null ,    null     1 ,        。
		
		c.test(null,null);
		
		c.test("a");
		
		c.test("a","b");
		
		c.test("a","b","c");
	}
	
	public void test(String ... strings){
		if(strings!=null){
			for (int i = 0; i < strings.length; i++) {
				System.out.println(strings[i]);
			}
		}
		else{
			System.out.println(strings);
		}
	}
}

      :
null
null
null
a
a
b
a
b
c


인용 하 다.
    예전 에는 자바 방법의 매개 변수 개 수 는 컴 파일 기간 에 이미 알 고 있 는 것 이 라 고 생각 했 는데,실제 참조 C\#와 변태 적 인 js 를 함부로 추가 할 수 있 는 것 이 부 러 웠 습 니 다.나중에 본의 아니 게 자바 방법 서명 에'...'라 는 쓰기 가 있 는 것 을 발 견 했 습 니 다.사실 자바 방법의 매개 변수 수 는 고정 되 지 않 을 수도 있 습 니 다.실행 할 때 까지.예 를 들 어 main 방법의 서명 은 이렇게 쓸 수 있 습 니 다.Public static void main(String..args)//방법 1 도 실행 할 수 있 습 니 다.또한,Public static void main(String[]args)//방법 2 가 동시에 존재 한다 면 중복 되 는 방법의 오 류 를 보고 할 수 있 습 니 다.이 를 통 해 알 수 있 듯 이 String..args 와 String[]args 는 가상 컴퓨터 에 있어 서 사실 같은 것 입 니 다.그리고...방법 내 에서...을 통 해 들 어 오 는 매개 변 수 를 사용 하 는 방법 도 하나의 배열 과 전혀 다 르 지 않 습 니 다.for 순환 이 가능 하고 심지어 직접 변환 할 수 있 습 니 다:Public static void main(String..args){    String[] ss=args; } 그러나 프로그래머 에 게 는 차이 가 있 습 니 다.1.호출 방법 2:main(new String[]{});즉,방법 2 는 String 배열 을 매개 변수 로 만 받 아들 일 수 있 습 니 다.우리 의 낯 선 방법 1 은 매우 강 합 니 다.다음 매개 변수 로 호출 하여 목록 에 따라 모두 받 습 니 다:main().main(null); main(null,null); main(null,null,null); ...... main("a"); main("a","b"); main("a","b","c"); ...... main(new String[]{}); (String...String*와 일치 하고 null 도 특수 한 String 일 수 있 습 니 다)2.매개 변수 위치 에서 사용 하 는 매개 변 수 는 마지막 매개 변수 일 수 있 습 니 다.그렇지 않 으 면 호출 할 때 점 이 어느 실제 인삼 과 일치 하 는 지 누가 알 겠 습 니까?public static void main(String[]args,int index)//public static void main(String...args,int index)//안 됩 니 다!3.재 부팅 가설 에는 다음 과 같은 두 가지 방법 이 있 습 니 다.Public static void main(String..args)//방법 1 Public static void main(String a,String...args)//방법 3 문법 적 으로 볼 때 이 재 부팅 은 전혀 잘못 되 지 않 았 고 eclipse 도 잘못 되 지 않 았 습 니 다.그러나 호출 할 때 사용 하 는 매개 변 수 는 이러한 방법 중 점 매개 변수 앞의 매개 변수 개수 보다 많 을 때eclipse 에서 이 오 류 를 발견 할 수 있 습 니 다.까다 롭 죠?헤헤~예 를 들 어 보 자.이 두 가지 방법 을 호출 할 때 main();컴 파일 러 는 이 호출 방법 을 알 아 볼 수 있 습 니 다.1.그러나 호출 할 때 main(");컴 파 일 러 가 미 쳐 버 렸 습 니 다...String 매개 변수 하나 로 인해 방법 1 의 점 과 방법 3 의 String+점 에 부합 되 기 때문에 컴 파 일 러 는 어떤 방법 으로 호출 되 었 는 지 모 릅 니 다.String[]매개 변 수 는 이런 문제 가 없 을 것 입 니 다.따라서 다시 불 러 올 때 주의해 야 합 니 다.점 매개 변수 앞 에 그 유형 과 같은 매개 변수 가 있 으 면...가장 좋 은 방법 은 배열 형식 으로 바 꾸 는 것 같 습 니 다.아니면 이름 을 바 꿔 주세요.4.일반적인 아웃 소 싱 을 만 나 인 스 턴 스 를 통 해 자바 util.Arrays 는 도구 류 입 니 다.모든 방법 은 정적 이 고 배열 에 대한 조작 입 니 다.그 안에 asList(T.args)방법 이 있 습 니 다.유형 T 의 배열 을 List로 바 꾸 는 데 유용 한 방법 입 니 다.대부분의 경우 원 하 는 대로 할 수 있 습 니 다.하지만...아래 의 쓰기 int[]is=.../사용자 정의 배열 이나 어디서 가 져 온 배열 Listlist=Arrays.asList(is)를 사용 해 보 세 요.불행 하 게 도 실행 은 커 녕 컴 파일 도 통 하지 않 습 니 다.잘못된 뜻 은 아마도 List를 List로 바 꿀 수 없다 는 것 입 니 다.아 시 겠 죠?당신 의 구상 은 int[]의 모든 요 소 를 T...의 모든 점 에 대응 하 는 것 입 니 다.컴 파일 러 는 그렇게 생각 하지 않 습 니 다.int 는 원시 적 인 유형 이지 Object 의 하위 클래스 가 아 닙 니 다.일반적인 T 에 포 함 된 조건 은 T extends Object 입 니 다.따라서 컴 파일 러 는 모든 int 를 T 로 보지 않 고 int[]를 T 점 으로 보지 않 습 니 다.자바 는 자동 으로 원시 유형 을 아웃 소 싱 류 로 패키지 하 는 것 을 지원 하지만,그러나 그것 은 하나의 상황 입 니 다.배열(어떤 유형 이 든)은 특수 한 유형 입 니 다.Object 의 하위 클래스 이기 때문에 컴 파일 러 는 전체 int[]가 T 에 대응 하 는 것 이 라 고 생각 합 니 다.당신 이 호출 하 는 방법 은 asList(Integer..)가 아 닙 니 다.

좋은 웹페이지 즐겨찾기