JavaStudy Chap. 5
Java의 정석 챕터5 배열
- 배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것, 각 저장공간이 연속적으로 배치되어 있다
- 배열의 선언 == 배열을 다루기 위한 참조변수의 선언
타입[] 변수이름 : int[] score; 타입 변수이름[] : int score[];
- 배열의 생성
변수이름 = new 타입[길이];
- 생성과 선언 동시에
타입[] 변수이름 = new 타입[길이];
: 해당 타입, 길이의 배열을 생성하고 참조변수가 이를 가리킨다
: 이 때 초기화도 동시에 한다면 new 타입[]을 생략할 수 있다.
- 배열의 원소에 대한 접근은 인덱스를 통해 한다
: 인덱스의 범위는 ( 0 ~ 길이-1 )
, 배열의 크기를 벗어나는 인덱스에 접근할 경우 실행에러 발생
( ArrayIndexOutOfBoundsException )
- 배열의 길이
: int 범위의 양의 정수 ( 0 포함 )
, 배열의 길이는 변경 불가능
: 배열이름.length -> 배열길이 얻을 수 있음
- 배열의 출력
- for문을 이용
int[] arr = {1,2,3,4,5,6};
for(int i=0;i<arr.length;i++) {
System.out.printf(arr[i]+" ");
}
- Arrays.toString(배열이름) 메소드 사용
System.out.println(Arrays.toString(arr));
: Arrays.toString()은 배열의 모든 요소를
'[ 요소1, 요소2, 요소3, ... ]' 형태의 문자열로 반환한다.
- 배열의 복사
- for문을 이용
- 기존배열보다 큰 배열 새로 생성
- for문을 사용해 모든 원소를 새 배열에 대입
- 기존배열의 참조변수가 새 배열 가리키게 함
- System.arraycopy() 사용
System.arraycopy(src, srcPos, dest, destPos, length)
- src : 복사하려는 원본 / srcPos : 원본의 어느위치부터 읽어올지
- dest : 복사 목적지가 되는 배열 / destPos : 복사를 시작할 위치
- length : 복사 할 데이터의 길이
- 배열의 활용
- 정렬하기
public static void main(String args[]) {
int[] numArr = new int[10];
//임의의 수 저장
for( int i=0 ; i< numArr.length ; i++) {
numArr[i] = (int)(Math.random()*10);
System.out.print(numArr[i]);
}
System.out.println();
for(int i=0;i<numArr.length-1;i++) {
boolean Changed = false;
for( int j=0;j<numArr.length-1-i;j++) {
if(numArr[j]>numArr[j+1]) {
int tmp = numArr[j];
numArr[j] = numArr[j + 1];
numArr[j + 1] = tmp;
Changed = true;
}
}
if(!Changed) break;
}
for(int k=0;k<numArr.length;k++) {
System.out.print(numArr[k]);
}
System.out.println();
}
- String 배열
String배열은 기본형배열이 아닌, 객체의 주소가 저장 돼 있는 참조형 배열이다.
- String 클래스
- String 클래스의 주요 메소드
| charAt( int index ) : 문자열에서 해당 위치의 문자 반환
| substring(int from, int to ) : from에서 to까지의 문자열 반환
| equals( Obj ) : 문자열 내용의 비교
| toCharArray() : 문자열을 문자배열로 변환
- 커맨드 라인을 통해 입력받기
프로그램 실행 시, 클래스명 뒤에 공백으로 구분한 여러개의 문자열을 String 배열로 전달 할 수 있음
-> 클래스의 main메소드의 매개변수인 args에 전달 됨!
-> 이는 String 배열이므로 args[index] 형태로 접근 가능
- 다차원 배열
2차원 배열은 '배열의 배열' 형태로 구성되어 있다.
"각 행을 가리키는 참조변수들의 배열 형태"
→ arr.length 는 행의 개수를 반환 / arr[i].length 가 열의 개수를 반환
2차원배열의 각 원소에 접근하려면 이중for문 사용
for( int[] tmp : score ) { //배열의 1차원( 행의 주소 가리키는 참조변수 )
for( int i : tmp ) { // 배열의 2차원( 각 원소 )
sum+=i;
}
}
- 가변배열
자바에서의 다차원배열은 '배열의 배열' 형태이기 때문에
각 행마다 길이가 다른 유동적인 배열을 생성할 수 있다.
int[][] score = new int[4][] // 두번째 차원의 길이를 미정으로 남기기 score[0] = new int[4]; //각 행마다 길이 다름 score[1] = new int[1]; score[2] = new int[3]; score[3] = new int[5];
꼭 이렇게 따로따로 생성하지 않아도 된다.
생성과 초기화를 동시에 하는 것도 가능하기 때문int[][] score = { {1,2,3} , {10,10,10,10,10] , {200,300] };
Author And Source
이 문제에 관하여(JavaStudy Chap. 5), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@quokka_beam/JavaStudy-Chap.-5저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)