05-Array
배열: 동일 타입의 데이터를 여러 개 모아놓은 변수의 형태
기본형 변수(boolean, char, int, double …)는 메모리 크기가 정해져있고 stack에 실제 값을 직접 q 저장하는 형식이고, 참조형 변수는 stack에 주소값 정보만 저장하고 heap에 영역의 값을 저장
배열의 경우 참조형 변수의 일종이다.
example
String s1 = “abcd”;
System.out.println(s1);
String s2;
System.out.println(s2);
stack | heap |
---|---|
s2 : null s1 : 100 (주소) |
100: “abcd” |
- heap : 객체와 배열(자바에서는 객체로 취급)이 생성되는 영역
- stack : 기본형 변수의 값과 참조형 변수의 주소값이 저장되는 영역
배열생성
//배열의 길이란 배열에 저장할 수 있는 전체 항목 수
타입 변수[] = new 타입[길이];
String r = new String[4];
int a[] = new int[3]; // 3개의 데이터 길이가 생성
a[0] = 1; // 첫번째 데이터공간의 인덱스는 1
a[1] = 2;
a[2] = 3;
// 다음과 같은 배열 선언도 가능하다.
int b[] = {1, 2, 3, 4, 5} // b.length = 5
int c[] = {
{1, 2, 3,}
{3, 2, 5, 6}
{2, 3, 2, 4}
}
다차원배열
//2차원배열
int[][]scores = new int[2][3];
//scores.length > 2
//scores[1].length > 3
int[][]scores = new int[2][]; // 이런식의 선언도 가능하다.
scores[0] = new int[2];
scores[1] = new int[3];
//앞의 배열은 총 2개의 배열에 0번에 2개의 배열길이, 1번에 3개의 배열길이가 만들어진다.
배열 속의 배열
int[][]mathScores = new int[2][3];
for(int i = 0; i<mathScores.length; i++){
for(int k = 0; k<mathScores[i].length; k++){
System.out.println(mathScores[i][k]);
}
}
int[][]englishScores = new int[2][];
englishScore[0] = new int[2];
englishScore[1] = new int[3];
for(int i = 0; i<englishScores.length; i++){
for(int k = 0; k<englishScores[i].lenghth; k++){
System.out.println(englishScores[i][k]);
}
}
int[][] javaScores = { {95, 80}, {92, 96, 80}};
for(int i = 0; i<javaScores.lenght; i++){
for(int k = 0; k<javaScores[i].length; k++){
System.out.println(javaScores[i][k]);
}
}
String names[] = new String[5];
int scores[][] = new int[names.length][3];
double avg [] = new double[names.length];
names[0] = "가 ";
names[1] = "나 ";
names[2] = "다 ";
names[3] = "라 ";
names[4] = "마 ";
for(int i = 0; i < scores.length; i++) {//5
int sum = 0;
System.out.print(names[i]+"\t");
for(int j = 0; j < scores[i].length;j++) {//5
scores[i][j] = (int)(Math.random()*100)+1;
System.out.print(scores[i][j]+"\t");
sum += scores[i][j];//3번
}
avg[i] = (double)sum / scores[i].length;
// java.text.DecimalFormat dec = new DecimalFormat("##.00");
System.out.println( (avg[i]));
System.out.println();
for문( : ){ }
for(타입변수 : 배열){
실행문
}
// 배열의 길이만큼 실행, 타입변수는 배열에 가져올 값이 있을경우 첫번째부터 하나씩 가져와서 실행함
//
int[] scores = {95, 71, 92, 93, 59}
int sum = 0;
for(int score : scores){
sum += score
}
Enum
- 배열: 동일 타입의 데이터가 여러개
- 열거 타입: enum 데이터가 여러개