월루를 꿈꾸는 대학생
CH5 배열 본문
1. 배열
1.1 배열이란?
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
** 서로 다른 타입의 변수로는 구성 X
int [] score = new int[5]; // 5개의 int값을 저장할 수 있는 배열 생성
- 배열은 각 저장공간이 연속적으로 배치되어 있다
1.2 배열의 선언과 생성
타입 변수이름 [] ;
변수이름 = new 타입[길이];
-> int score[] = new int[5];
1) int 형 배열 참조변수 score를 선언
2) 연산자 new에 의해 메모리의 빈 공간에 5개의 int형 데이터 저장할 공간 생성
3) 배열요소는 자동적으로 int의 default값인 0으로 초기화
4) 연산자 = 에 의해서 배열의 주소가 int형 배열 참조변수 score에 저장
1.3 배열의 길이와 인덱스
- 배열의 요소 : 배열의 각 저장공간
- 인덱스 : 배열의 요소마다 붙여진 일련번호
인덱스의 범위는 0부터 '배열길이 -1'까지
** 배열의 길이가 5일 때 index를 5 사용하면 에러
배열의 길이
- 배열의 길이는 int범위의 양의정수 ( 0도 포함) 이다
배열이름.length
- 배열이름.length를 통해 배열 길이에 대한 정보를 획득
** 조건식이나 반복문에 사용시 배열의 길이를 직접 사용하기 보단 배열이름.length라는 걸 통해 배열의 길이가 변경되어도 자동적으로 변경된 배열의 길이를 사용하도록 하는 것이 좋다
1.4 배열의 초기화
- 배열은 선언시 default 값으로 초기화 되기에 각 배열의 원소에 값을 넣어줘야한다
배열의 출력
-Arrays.toString(배열이름)
1.5 배열의 복사
- 배열을 한 번 생성하면 그 길이를 변경할 수가 없다
- 즉 큰 배열을 새로 만들고 기존의 배열을 복사하는 방법
기존의 arr는 참조변수가 더 이상 참조하지 않기에 나중에 삭제되고
결국 크기가 10인 배열만 참조변수 arr, temp가 가리키게 됨
System.arraycopy() 를 이용한 배열 복사
- for문을 통한 복사는 배열 하나하나 접근해서 복사이지만 arraycopy()sms 지정된 범위 값들을 통째로 복사
즉 배열의 복사는 for문 보다 System.arraycopy()가 효율적
for(int i=0 ; i <num.length ; i++ )
{
newNum[i] = num[i];
}
System.arraycopy( num, 0 , newNum, 0, num.length );
-> num[0]에서 newNum[0]으로 num.length개의 데이터를 복사
1.6 배열의 활용
총합과 평균
최대값과 최소값
섞기
임의의 값으로 배열 채우기
정렬하기
빈도수 구하기
임의의 값으로 배열 채우기
정렬하기
* 참조변수.charAt(숫자) == ' 문자' -> 문자열에서 해당 숫자에 대응 하는 문자를 추출
* 배열로 조건 만들 때 숫자가 0부터 시작하기 때문에 -1 하는 거 잊지 않기
* public static void main ( String[] args )
-> str = args[0] -> 실행시 java ∨이름 ∨여기서부터 문자열이 배정 ∨
-> str = args[1] -> 실행시 java ∨이름 ∨[a] ∨[1] 두번째 단어 주소가 배정
2. String 배열
2.1 String 배열의 선언과 생성
String [] name = new String[3];
// 3개의 문자열 담을 수 있는 배열 생성
* 해당 string 배열은 default 값이 null
String 배열은 실제 객체가 아닌 객체의 주소가 배열에 저장되어 있다
2.3 char 배열과 String 클래스
- String 클래스가 char 배열에 여러 기능을 추가하여 확장한 것
즉 String 클래스는 char 배열에 기능 ( 메서드)를 추가한 것
2.4 커맨드 라인을 통해 입력받기
- Scanner 클래스의 nextLine() 외에 입력받을 수 있는 방법 -> 커맨드라인
- 프로그램 실행시 클래스 이름 뒤에 공백으로 문자를 구분하여 여러 개의 문자열을 프로그램에 전달 가능
3. 다차원 배열
- 2차원 이상의 배열 사용가능
타입 [][] 변수이름 ;
int [][] score = new int[4][3];
2차원 배열의 인덱스
int [][] arr = {
{1,2,3},
{4,5,6}
};
위와 같이 초기화 하는 것이 보기도 좋고 이해도 쉬움
3.3 가변 배열
- 배열 마지막 차수의 길이를 지정하지 않고 추후 지정함으로써 고정이 아닌 유동적인 배열을 구성가능
int [][] score = new int[5][];
score[0] = new int[3];
score[1] = new int[4];
score[2] = new int[2];
score[3] = new int[1];
score[4] = new int[7];
'Programing > Java' 카테고리의 다른 글
ch 6-1 객체지향 (0) | 2021.03.21 |
---|---|
ch5 배열 백준 알고리즘 (0) | 2021.03.13 |
ch 4 조건문과 반복문 _ 알고리즘 (0) | 2021.03.07 |
ch4 조건문과 반복문 (0) | 2021.03.07 |
연산자 (0) | 2021.02.27 |