>배열
:같은 자료형의 여러 변수를 나열해 놓은것
>배열의 선언
자료형[] 배열명 = {값1,값2,...};
자료형[] 배열명 = new 자료형[칸수]; --->각각 자료형에 맞게 초기화 됨.
ex) int[] arData = {10,5,1,17,15};
arData[0] = 20; //공간의미!! (대괄호는 연산자이므로 공간이다)
만약에!! 안에있는 수를 출력하고 싶을때는 어떻게 해야할까?
하나하나 적어보면 arData[0] = 10 이렇게 될것이다.
arData[1] = 5
arData[2] = 1
....
-->여기서 규칙성을 볼수있다. arData[] 라는 값이 계속 반복되며 안에 index
넘버가 1씩 증가함을 알수 있다. 그래서 여기서 우리가 떠올려야 하는것은 for문이다.
index 0부터 4까지 1씩 반복하는 반복문을 만들자.
for(int i = 0; i<5; i++){
System.out.println(arData[i]); }
>배열의 사용 이유
1. 여러 같은 의미의 값들을 하나의 이름과 인덱스로 관리하기 위해서(관계성)
(예를들어 우리반 아이들 성적만 적어놔야하는데 내 나이들어가면 안됌)
2 .다른 의미의 값들에 의미부여를 해서 하나로 관리하기 위해서
String [] arMsg = {"김늘또" ,"자바", "꽃" ,"hello"};
0 1 2 3
(전혀 관계는 없지만 방번호를 넣어줌으로서 규칙성을 부여할 수 있다)
>배열의 인덱스 번호
실제 값들이 저장되어 있는 공간이 할당되면 이름은 존재하지 않고
주소값만 존재한다. 따라서 시작 주소를 배열명 변수가 기억하고 있고 ,
주소연산(추가이동)을 통해 다음 주소로 이동한다. 시작 주소에서
연산된 정수(이동한 횟수)가 인덱스 번호가 되고 첫번쨰 방은
배열명 변수가 가지고 있는 시작 주소에서 0번 이동해야 하므로
인덱스 번호는 0번부터 시작된다.

>배열의 사용
data = 10 // 공간 // =이 없으면 값!!!
syso(data); // 값
배열명[idx] = 값; // 공간
syso(배열명[idx]); //값
>배열의 길이
배열명.length


--->
1.5개의 정수를 받기 위해서 공간을 만들어준다.
2.length를 의미하는 변수를 선언해준다.
3.System불러와서 입력을 준비한다.
4.array[0] [1] [2].. 반복되므로 for문을 만든다.
-->index가 array의 길이 만큼 반복되며 1씩 늘어난다.
5.안에 println을 넣으면 넣을때마다 출력이되므로 밖으로 빼서 출력문을 하나 더 만들어 주자.
>기타제어
break
continue: 다음 반복으로 넘어가기 /반복시 해야할 행위들은 함
(while: 조건식 검사/ for: 증감식, 조건식 검사 )
ex) 1~10까지 출력하는데 4를 제외하고 싶을때 ↓

ex)for문 이용하여 합계와 평균까지 구해보는 예제
ex1) 합계 구할때( 증감연산자를 이용하자!!)
sum +=space1[i];

ex2) 합계와 통계 구할때

------------------------------------------------------------------------------------------
>2차원 배열
:배열 안의 배열= 행렬(ex:여러 사람들의 다양한 성적을 넣고싶을때..)
>2차원 배열 선언
자료형[행][열] 배열명 = {
{값1,값2,...},
{값3,값4,...},
....};
자료형[ ][ ] 배열명 = new 자료형[행수][열수];
ex) int[ ][ ] arrData = {
{10,20,30},
{40,50,60}
};
int[ ][ ] arrData2 = new int[2][3];
-배열의 종류
정방배열 :각 행마다 열의 개수가 모두 같은 배열
비정방배열 각 행마다 열의 개수가 다른 배열(ex:첫번째는 3개였는데 두번째 행에 4개 ok)
When? (ex:한 고등학교에 각각 반의 학생들의 성적을 해야하는경우 반 학생수가
다르므로 비정방배열을 써야한다)
int[ ][ ]arrData3 = new int[2][ ];
arrData3[0] = new int[3];
arrData3[1] = new int[5];
--------------------------------------------------------------------------------------
>2중 for문(nested for문) (=둥지처럼 안에 감싸져 있다)
:for문 안에 for문이 있는 형태
-->바깥쪽에 있는 for문은 다음 반복으로 넘어가기 위해서
자신 내부에 있는 수행할 문장들을 모두 마쳐야 한다.
안쪽에 수행할 문장으로 j for문이 있으므로, 그 j for문이
완벽히 모두 완료되어야 i for문 입장에서 내부에 수행할 문장을
마친것이 된다.따라서 j for문이 완전히 끝나면 그제서야 i for문은
다음 반복으로 넘어가게 되고 다시 수행할 문장으로 j for문을 만나면
위의 과정을 반복하게 된다. 가장 안쪽에 있는 문장은
(i for문 반복횟수) * (j for문 반복횟수) 만큼 수행된다.
ex) 구구단 만들고 싶을때
for(int i = 0; i<9; i++){
for(int j = 0; j<9; j++){
System.out.prinf("%d X %d = %d\n", i+1,j+1,(i+1)*(j+1)) } }
ex1)별 반복적으로 나타내고 싶을때
*
**
***
****
*****
for (int i = 0; i < 5; i++) {
for (int j = 0; j < i+1; j++) {
System.out.print("*");
}
System.out.println();
}
>>2중 for문과 2차원 배열을 결합한 문제
ex1) 학생수를 입력하고 학생에 따른 국어,수학,영어 성적을 입력하고 총합, 평균, 전체평균을 구하시오


>>예제2


'프로그래밍 > Java 정리' 카테고리의 다른 글
Java 6일차 -메소드 (0) | 2021.11.23 |
---|---|
Java 4일차 -for문 (0) | 2021.11.23 |
Java 3일차 -조건문 (0) | 2021.11.19 |
Java 2일차 -변수 (0) | 2021.11.17 |
Java 1일차 (1) | 2021.11.16 |