일반 배열
- 자료형이 같은 기억장소의 모임
int [ ]변수명1; // 배열의 선언
변수명1 = new int [ 배열의 개수 ]; // 배열의 생성
int []student= {28,23,27,26,26}; //배열의 선언과 동시에 초기화까지
2차원 배열
- 2차원 배열에서 length는 행의 길이임
int [][]b = new int[4][3]; // 4*3 배열 생성
문) 아래와 같이 출력 할 것
//5행 5열의 정수형 2차원 배열을 생성하고, 1부터 1씩 증가한 값을 저장
//조건 1: 맨 마지막 열에는 각 행의 합이 누적 되도록하고
//조건 2: 맨 마지막 행에는 각 열의 합이 누적되도록 함
//조건 3: 그리고 마지막 행 열에는 모든 요소의 총 합이 누적 되도록 함
// 0 1 2 3 4
// 0 [1] [2] [3] [4] [10] 1+2+3+4 = 10
// 1 [5] [6] [7] [8] [26]
// 2 [9] [10] [11] [12] [42]
// 3 [13] [14] [15] [16] [58]
// 4 [28] [32] [36] [40] [136]
int a[][] = new int[5][5];
int n=1;
int sum=0;
for (int i=0; i<a.length-1; i++) { // 줄수를 위한 반복문
for (int j=0; j<a.length-1; j++) { // 칸수를 위한 반복문
a[i][j] = n++;
a[i][4] = a[i][4] + a[i][j]; // 행 더하기
a[4][j] = a[4][j] + a[i][j]; // 열 더하기
sum += a[i][j]; // 마지막 행, 열에 모든 요소의 합 누적
}
}
a[4][4]=sum;
for (int i=0; i<a.length;i++) {
for (int j=0; j<a.length; j++) {
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
java에서는 행마다 열의 크기가 다른 배열을 만들 수 있음
--- 예시 ---
[ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ]
int [ ] [ ] a = new int [ 3 ] [ ];
a[0] = new int[2];
a[1] = new int[5];
a[2] = new int[3];
int [][]a = new int [3][];
a[0] = new int[2];
a[1] = new int[5];
a[2] = new int[3];
int n = 1;
for (int i=0; i<a.length; i++) {
for (int j=0; j<a[i].length; j++) {
a[i][j] = n++;
}
}
for (int i=0; i<a.length; i++) {
for (int j=0; j<a[i].length; j++) {
System.out.print(a[i][j]+"\t");
}
System.out.println();
}
3차원 배열
- 면, 행, 열으로 구성된 배열을 말합니다
--- 예시 ---
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
[ ] [ ] [ ] [ ] [ ]
int [ ] [ ] [ ] a = new int [2] [3] [5]; // 면이 2개이고, 3행 5열짜리 배열
문) 아래와 같이 출력할 것
int [][][]a = new int [2][3][5];
for (int i=0; i<a.length; i++) { // a.length=2
for(int j=0;j<a[i].length;j++) { // a[i].length == 3
for(int k=0; k<a[i][j].length;k++) { // a[i][j].length ==5
a[i][j][k]=i;
}
}
}
// 출력하기
for (int i=0; i<a.length; i++) { // a.length=2
for(int j=0;j<a[i].length;j++) { // a[i].length == 3
for(int k=0; k<a[i][j].length;k++) { // a[i][j].length ==5
System.out.print(a[i][j][k]+"\t");
}
System.out.println();
}
System.out.println();
}
동적 배열 ArrayList
- 배열을 동적으로 생성 가능함
ArrayList<자료형> ArrayTest= new ArrayList<자료형>();
ArrayTest.add(입력 값); //동적으로 배열을 계속 넣을 수 있음
ArrayTest.get( i ) // 넣었던 입력 값을 배열의 값을 가져옴
문) 성적을 입력 받아 합계, 평균을 출력하시오
성적을 입력 받아 합계, 평균을 출력하시오
-1이 나오면 성적 입력 stop
입력 값 & 출력 값
Scanner sc = new Scanner(System.in);
ArrayList<Integer> n = new ArrayList<Integer>();
int data;
while(true){
System.out.println("성적을 입력하세요");
data = sc.nextInt();
if (data == -1) {
break;
}
n.add(data); //동적으로 배열을 계속 넣을 수 있음
}
int total = 0;
for(int i=0; i<n.size(); i++) {
total += n.get(i);// 넣어던 데이터를 가져옴
}
System.out.println("합계: "+total);
System.out.println("평균: "+(double)total/n.size());
만약 자료형으로 class를 사용하게 됐을 경우
Book 클래스의 변수가 title, score를 갖고 있다면 ArrayList의 add 함수로 ArrayList 추가 할 때 각 열에 Book 객체의 주소 값이 저장되고 해당 주소값에는 [title, score]가 쌍으로 저장되어있다.
아래 그림 출력 값은 Book 객체를 2개 생성 후 [title, score]를 생성자를 이용하여 등록하고 add 했을 경우 ArrayList 출력 했을 때 주소값이 각각 1개 씩 객체수만큼 2개 들어간 것을 확인 가능
만약 주소 값 대신 저장된 [title, score]를 보고 싶다면 toString() 함수를 재정의 하여 출력 하면 됌
반응형
'개발 > 자바' 카테고리의 다른 글
이클립스 getter, setter/ 생성자 자동 생성 방법 (0) | 2022.04.04 |
---|---|
(Java) 선택문 (if, Switch) (0) | 2022.03.30 |
(Java) 반복문 / for / while/ do~while (0) | 2022.03.30 |
약수 및 소수 구하기 (0) | 2022.03.30 |
중첩 if문 활용도 (0) | 2022.03.29 |
댓글