고정배열

2차원 배열의 경우,

형식) int a[][] = new int [행수][열수];

  열 [0] [1] [2]
행 [0] int a[0][0] int a[0][1] int a[0][2]
[1] int a[1][0] int a[1][1] int a[1][2]
[2] int a[2][0] int a[2][1] int a[2][2]

 

가변배열

2차원 배열에만 해당,

행은 정해져 있으나 열은 정해져 있지 않은 배열

형식)

int b[][]=new int[3][];

int b[][]={{10,20,30},{40,50},{60,70,80,90}};

  열 [0] [1] [2] [3]
행 [0] int b[0][0] int b[0][1] int b[0][2]  
[1] int b[1][0] int b[1][1]    
[2] int b[2][0] int b[2][1] int b[2][2] int b[2][3]

 

//고정배열 + 가변배열 (예시)
public class DoubleTest {
	public static void main(String[] args) {
      int c[][]=new int[3][3];//고정배열
      //c[0][0]=10,c[0][1]=20,c[0][2]=30,,,c[2][2]=90;

      int b[][]= {{10,20,30},{40,50},{60,70,80,90}};//가변배열
      
      for(int i=0;i<b.length;i++)//b.length=>행의 수
      {
    	  System.out.println("b["+i+"]의 주소값="+b[i]);//열의 주소값
    	  for(int j=0;j<b[i].length;j++)//b[i].length=>열의수
    	  {
    		  System.out.println("b["+i+"]["+j+"]="+b[i][j]);
    	   }
      }
      
      System.out.println("===확장for문으로 2차원배열 출력===");

       for(int temp[]:b) {//2차원배열 b에서 1차원배열의 값을 하나씩 꺼내서 temp에 저장
    	    for(int su:temp) { //1차원배열->각각의 값을 변수su에 저장                     
    	       System.out.print(su+"\t");
    	    }
    	    System.out.println();//행이 바뀔때마다 줄바꿈
       }
	}//main
}
/*
b[0]의 주소값=[I@15db9742
b[0][0]=10
b[0][1]=20
b[0][2]=30
b[1]의 주소값=[I@6d06d69c
b[1][0]=40
b[1][1]=50
b[2]의 주소값=[I@7852e922
b[2][0]=60
b[2][1]=70
b[2][2]=80
b[2][3]=90
===확장for문으로 2차원배열 출력===
10	20	30	
40	50	
60	70	80	90	
*/

 

동적배열 

입력받은 값의 크기에 따라 자동으로 배열의 크기가 증가, 감소하는 탄력성을 지닌 배열

가변인자 사용( ... ), 오버로딩에서 활용됨(매개변수의 자료형은 같고 갯수만 다를때)

public class VarArgTest {

	//고정배열 -> 크기가 정해진 배열 
	public void print(String names[]) {
		for(int i=0;i<names.length;i++)
			System.out.print(names[i]+"\t");
		System.out.println();
	}
	
	//동적배열 -> 크기가 정해지지 않은 배열
	//매개변수의 갯수와 상관없이 입력받는 갯수에 따라서 처리해주는 배열
	//입력받은 갯수만큼 자동적으로 늘어나는 배열을 내부에서 생성

	/*고정배열, 동적배열 둘다 배열의 값을 출력해주지만 
    동적배열의 경우는 문자열을 받아 배열로 만들어서 출력하는 것임!*/
	public void print2(String ...names) {
		for(int i=0;i<names.length;i++)
			System.out.print(names[i]+"\t");
		System.out.println();
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		VarArgTest vat=new VarArgTest();
		String str[]= {"자","바","코딩"};
		vat.print(str);
		
		vat.print2("자");
		vat.print2("자","바");
		vat.print2("자","바","코딩");
		
		vat.print2("자","바","코딩","c");
		vat.print2("자","바","코딩","c","언");
		vat.print2("자","바","코딩","c","언","어");
	}
}
/*
자	바	코딩	
자	
자	바	
자	바	코딩	
자	바	코딩	c	
자	바	코딩	c	언	
자	바	코딩	c	언	어	
*/

 


main() 메서드에서의 배열

- main메소드의 배열에 파라미터 전달하기

 

Run > Run Configurations > Arguments 

 


메인메소드에서 배열의 자료형은 변경할 수 없다

 

오류: j210111.ArrayDynamic 클래스에서 기본 메소드를 찾을 수 없습니다. 다음 형식으로 기본 메소드를 정의하십시오. 
public static void main(String[] args) 
또는 JavaFX 애플리케이션 클래스는 javafx.application.Application을(를) 확장해야 합니다.

=> 메인메소드에서 매개변수명은 변경이 가능하다(args -> x, y, z ...)

=> 메인메소드의 매개변수의 자료형은 변경할 수가 없다는 에러메세지

 

+ Recent posts