선언방법
1) 타입[ ] 변수이름;
(ex) int[ ] score; or String[ ] name;
2) 타입 변수이름 [ ];
(ex) int score[ ]; or String name [ ]
1) 배열 선언
int[ ] score; # score이라는 참조변수만 생성, 데이터 저장 공간은 마련 x
2) 배열 생성
score = new int[5]; #score -> [ ] 실제 int 리스트 공간 생성
ArrayIndexOutodBoundsException
발생=> 이는 비용이 많이 드는 작업, 처음부터 배열의 길이 넉넉히 잡기 - 새로 배열 생성 상황 가능한 적게 해야함
System.arraycopy(num, 0, newNum, 0, num.length);
=> num[0]에서 newNum[0]으로 num.length 개의 데이터 복사
1) 총합, 평균 구하기
class ArrayEx5 {
public static void main(String[] args) {
int sum =0; // 총점을 저장하기 위한 변수
float average = 0f; // 평균을 저장하기 위한 변수
int[] score = {100, 88, 100, 100, 90};
for (int i=0; i < score.length ; i++ ) {
sum += score[i];
}
average = sum / (float)score.length ; // 계산결과를 float로 얻기 위함.
}
}
String[] name = new String[]{"1", "2", "3"};
String[] name = {"1", "2", "3"};
=> new String[] 생략도 가능
자바에서 char 배열이 아닌 String 클래스 이용 이유는 char 배열 사용하는 것보다, String 클래스 사용하는 것이 문자열 다루기 더 편리해서, 다양한 메소드를 제공해주기 때문이다.
String 제공 메소드
1) charAt(int index) 문자열에서 해당 위치에 있는 문자 반환
2) length() 문자열의 길이 반환
3) substring(int from, int to) from<= ~ <to 까지의 문자열 (to는 포함 안된다)
4) equals - 문자열의 내용이 obj와 같은지 확인
5) char[] to CharArray() 문자열의 문자배열(char[ ] )로 변환해서 반환
(ex) Math.random()*10 => 0~9 의 범위
(ex) int num1 = Integer.parseInt("1")
위까지는 일차원 배열에 대해서 다뤘던 것
int[] [] arr = new int [] [] { {1,2,3}, {4,5,6} };
=> new int 생략 가능
int[][] A = new int[5][3];
위와 같이 미리 고정된 형태가 아니라
int[][] A = new int[5][];
A[0] = new int[4];
A[1] = new int[2];
A[2] = new int[5];
A[3] = new int[3];
A[4] = new int[4];
이와 같이 전체 배열 차수 중 마지막 차수의 길이를 지정하지 않고, 추후에 각기 다른 배열을 생성 -> 고정된 형태가 아닌 유동적인 가변 배열 구성 가능
남궁성 저자님의 자바의 정석, public 깃허브 코드, 깃허브 업로드 ppt : https://github.com/castello/javajungsuk3/blob/master/source/ch5/ArrayEx5.java