1 . 배열 : 같은 타입의 변수들의 모임
1) 변수 선언
① 선언
1_ int[] array = new int [선언할 배열의 수(array의 index)]
변수 타입 = * array는 참조변수(주소값 담고 있는 변수)
* 힙 영역에 연속된 변수의 set이들어감, 배열의 시작은 무조건 0번 부터 시작이 됨.
2_ int[] array = { a,b,c,d }
2) 동적 vs 정적
- 동적 : 프로그램이 실행되는 중에 생성되는 것
- 정적 : 컴파일을 하면서 부터 생성이 되있는것
3) final : 상수를 나타내며 final로 선언을 했을 때 값은 변하지 않는다.
-> final : 하나의 객체 안에서 국한됨.
-> final static : 어떤 객체에서도 나는 하나의 객체입니다. (ex ) 원주율 )
배열.length : 선언한 배열을 끝까지 읽어 올때 많이 쓴다.
4) for -each //전체를 읽어올때 많이 쓴다.!!
or(int value : numbers)
해당 배열과 같은 타입의 변수, 뽑아올 대상 배열
ㅁ 이것은 알아놓자!!
1_일반 변수 선언과 배열의 차이는 일반 변수는 메모리상에 변수가 저장되는 위치가 일정하지 않지만
배열을 선언하게 되면 선언한 공간만큼 메모리상에 잡아 놓기 때문에 속도의 차이가 있다.
2_ 그리고 위에서 선언된 array
3_배열안의 선언된 배열을 읽어 줄때에는 선언된 변수의 idex라 읽음 ex) array[2] -> array의 index 2라 읽음
2. 배열의 응용 : 정렬
1) 선택정렬 : 주어진 리스트 중에서 최소값을 선정하여 왼쪽에서 부터 정렬하는 정렬
int[] arr = {5,7,8,2,6};
int value1; // 값
int pos; // 위치 표시
for(int j = 0 ; j < arr.length; j++) { // 배열의 길이까지 반복을 실행함
value1 =arr[j]; //배열의 값을 저장
pos = j; // 변경된 위치를 표시함
for(int i = j; i < arr.length; i++) { // 순차적으로 배열의 반복을 실행하면서 변경된 위치를 초기값으로 잡고 반복 실행
if(value1 > arr[i]) { // 기준점 이후를 비교하여 값이 크면
value1 = arr[i]; // 그 값을 value 값에 다가 저장을 한다 .
pos = i; // 위치를 변경한다.
}
}
int tmp = arr[pos]; // 변경할 위치의 값을 임시 변수에 저장
arr[pos] = arr[j]; // 변경할 값을 대입
arr[j] = tmp; // 변경완료
} for(int x : arr) // arr 배열의 값을 모두 읽어온다.
System.out.print(x);
2) 버블정렬 : 두 인접한 원소를 검사하여 정렬하는 방법
int[] arr = {5,7,8,2,6,4,3,9}; // 정리할 배열의 예제
for(int j=0; j < arr.length; j++) { // 배열의 끝자리 까지 반복을 진행함.
for(int i=0; i < arr.length-1; i++) { // 배열의 끝자리 전까지 만 반복을 실행함.
if(arr[i] > arr[i+1]) { // 배열의 앞뒤를 비교하여 정렬 실행
int tmp = arr[i];
arr[i] = arr[i+1];
arr[i+1] = tmp;
}
}
}for(int value : arr) // 모든 값을 출력
System.out.print(value);