고정배열
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 ...)
=> 메인메소드의 매개변수의 자료형은 변경할 수가 없다는 에러메세지
'JAVA' 카테고리의 다른 글
[JAVA]상속의 특징, 장단점, super, super(), 오버라이딩, 상속과 생성자와의 관계, toString() (0) | 2021.01.20 |
---|---|
[JAVA]API 참조 (0) | 2021.01.19 |
[JAVA]배열/ enhanced for 문/ Scanner 클래스 (0) | 2021.01.15 |
[JAVA]생성자, 일반메서드, 정적메서드, 메서드영역, 힙영역, 스택영역 (0) | 2021.01.14 |
[JAVA] this 사용법/ 예시 (0) | 2021.01.13 |