배열
: 같은 타입, 같은 의미를 가지는 변수들의 집합 (참조 변수)
- [ ] : 인덱스 연산자 = 배열 요소가 저장된 메모리의 위치를 찾아주는 기능
- 반복문 이용 가능, 관리가 용이, 선언 이후 배열 값 변경이 가능
배열 선언
1. 배열 선언
- 타입[ ] 배열이름;
- 타입 배열이름[ ];
2. 배열 선언 및 초기화 (바로 생성)
- 타입[ ] 배열이름 = new 타입 [ 길이 ] ;
- 타입 배열 이름[ ] = new 타입 [ 길이 ] ;
- 가장 일반적 선언
- [ ] 길이가 공백일 경우 = 0으로 생성
- 타입 [ ] 배열 이름 = new 타입 [ ] { 값, 값, 값, 값, 값} ;
- 타입 [ ] 배열 이름 = {값, 값, 값, 값, 값} ;
- 선언과 동시에 초기화가 가능한 경우 사용 (바로 사용)
주의 사항
- 배열의 시작번지 : 0
- 배열의 마지막 번지 : 배열 길이 -1
- 배열의 길이 : .length (0이상)
- 배열 길이는 길이 추가/삭제 불가능!
⭐ 배열 길이를 늘리거나 삭제하는 방법
1. 배열 길이(크기) 늘리기
: new를 이용하여 새 배열 생성 -> arraycopy 을 이용해 배열 복사 -> 연결 하기
System.arraycopy( 구배열, 시작번지, 신배열, 시작번지, 총개수 )
private Subject[] subjectList;
private int subCount;
//배열의 모든 자리를 사용한 경우,
//new을 이용해 새 배열 생성 -> arraycopy 을 이용해 배열 복사 -> 연결
if(subCount == subjectList.length) {
Subject[] tmp = new Subject[subjectList.length+5]; //subCount+5도 동일효과(5만큼 늘리기)
System.arraycopy(subjectList, 0, tmp, 0, subCount); //tmp임시배열에 옮겼다가
subjectList = tmp; //다시 배열에 연결
}
2. 배열에서 원하는 값 찾아 삭제하기
: 배열을 밀고 새로 정리하는 방법
= 찾은 위치부터 뒷 번지의 값을 모두 한칸씩 앞으로 쭉쭉 밀어서 저장
- 찾는 값의 번지를 찾을 index 선언
- 배열에 있는지 값 확인 → 있는 경우, 찾는 값을 배열의 맨 뒤로 보내고 null로 선언
public void deleteSubject(String subName) {
int index = -1; //찾는 과목의 위치를 나타내는 변수
//찾을 subName을 잘못해서 안넣은 경우
if(subName == null) {
return;
}
//배열에 있는지 확인하는 for문
for(int i=0; i<subCount; i++) {//subCount=값이 있는 곳까지만 확인
if(subjectList[i].getSubName().equals(subName)) {
index=i; //있다면 index에 과목 위치 삽입
break;
}
}
//찾는 subName이 배열에 없는 경우
if(index == -1) {
return;
}
//찾는 subName이 배열에 있는 경우
//찾은 위치부터 뒷 번지의 값을 앞으로 쭉쭉 밀어서 저장
//subCount=1 =1과목이 있다는 의미 =subjectList는 0번지
for(int i=index; i<subCount-1; i++) { //subCount-1까지 하는게 중요!!
subjectList[i] = subjectList[i+1];
}
//= 마지막 번지를 null로!
//예) 과목이 3인 경우: 0 1 2
subjectList[subCount-1]=null;
subCount--;
'JAVA > java' 카테고리의 다른 글
[JAVA] 반복문 while문 / do-while 문 (0) | 2023.03.26 |
---|---|
[JAVA] 반복문 for문 / break / continue (0) | 2023.03.26 |
[JAVA] class 클래스와 객체 : Static 변수 , 변수 유효 범위 (0) | 2023.03.25 |
[JAVA] class 클래스와 객체 : final (수정이 불가능한 상수) (0) | 2023.03.25 |
[JAVA] class 클래스와 객체 : this 예약어 (0) | 2023.03.25 |