
배열 : 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것.
- 참조변수 : 배열의 이름.
- 요소(element) : 배열에 저장된 데이터.
- 인덱스(index) : 각 요소에 자동으로 붙는 번호. 0 ~ '배열길이 -1'까지.

배열을 다루기 위한 참조변수의 선언
| 선언방법 | 선언예 |
|---|---|
| Java 형식 타입[ ] 변수 이름; | int[] score; String[] name; |
| C언어 형식 타입 변수이름[ ] | int score[]; String name[]; |
실제 저장공간을 생성.
변수이름 = new 타입[길이];
int[] score; //배열의 선언
score = new int[5]; //배열의 생성
int[] score - new int[5]; //선언과 생성을 동시에
배열의 각 요소에 처음으로 값을 저장하는 것
int[] score = new int[5];
//인덱스를 통하여 각각 초기화.
score[0] = 50;
score[1] = 60;
score[2] = 70;
score[3] = 80;
score[4] = 90;
// for문으로 초기화.
for(int i = 0; i<score.length; i++) //score의 길이 만큼 반복
score[i] = i * 10 + 50;
//선언할 때 바로 초기화.
int[] score = new int[]{50, 60, 70, 80, 90}; //new int[] 생략가능
int[] score;
score = {50, 60, 70, 80, 90}; //에러. new int[] 생략 불가능
score = new int[]{50, 60, 70, 80, 90}; //ok
int[] iArr = {100, 95, 80, 70 ,60};
System.out.println(iArr); // 주소값이 출력
//[I@14318bb
for(int i = 0; i<iArr.length; i++) // 배열의 요소를 순서대로 하나씩 출력
System.out.println(iArr[i]);
/*
100
95
80
70
60
*/
System.out.println(iArr.toString(iArr)); // 배열의 모든 요소를 출력
// [100, 95, 80, 70, 60]
테이블 형태의 데이터를 저장하기 위한 배열
| 국어 | 영어 | 수학 |
|---|---|---|
| 100 | 100 | 100 |
| 20 | 20 | 20 |
| 30 | 30 | 30 |
| 40 | 40 | 40 |
int[][] score = new int[4][3]; //4행 3열의 2차원 배열 생성.

int[][] score = new int[4][3];
score[0][0] = 100; //1행1열에 100을 저장
System.out.println(score[0][0]); //1행1열의 값인 100 출력
int[][] arr = {{1,2,3}, {4,5,6}}; //new int[][]가 생략됨
int[][] arr = {
{1,2,3},
{4,5,6}
}; //위 초기화 구문과 같음
- 배열이름.length : 배열의 길이를 int값으로 반환
- Arrays.toString(배열이름) : 1차원 배열을 스트링 형태로 출력.
- Arrays.deepToString(배열이름) : 2차원배열을 스트링 형태로 출력.
- Arrays.equals(배열1, 배열2) : 1차원인 배열1과 배열2가 같은지 비교.
- Arrays.deepEquals(배열1, 배열2) : 2차원인 배열1과 배열2가 같은지 비교
- Arrays.copyof(배열이름, 길이) : 길이만큼 1차원 배열을 복사
- 배열형태로 반환되므로 배열로 받아야한다.
- Array.copyOfRange(배열이름,시작위치,끝위치) : 시작위치부터 끝위치 까지 배열을 복사
- 배열형태로 반환되므로 배열로 받아야한다.
- Array.sort(배열이름) : 1차원 배열을 오름차순 정렬한다.
배열의 모든 요소를 더해서 총합과 평균을 구한다.
int sum = 0; //총합
float averge = 0f; //평균
int[] score = {100, 88, 100, 100, 90};
for(int i = 0; i<score.length; i++)
sum += score[i]; // 배열에 저장된 값들을 모두 더함.
average = sum / (float)score.length; //형변환하여 평균내기
System.out.println("총합 : "+ sum);
System.out.println("평균 : "+ average);
/*
478 / 5 = 95
478 / (float)5 = 95.6f
총합 : 478
평균 : 95.6f
*/
배열의 요소 중에서 제일 큰 값과 제일 작은 값을 찾는다.
int[] score = {79, 88, 91, 33, 100, 55, 95};
int max = score[0];
int min = score[1];
for(int i = 1; i<score.length; i++){
if(score[i] > max)
max = score[i];
if(score[i] < min)
min = score[i];
}
System.out.println("최대값 : "+ max);
System.out.println("최소값 : "+ min);
/*
최대값 : 100
최소값 : 33
*/
배열의 요소의 순서를 반복해서 바꾼다.(숫자 섞기, 로또번호 생성)
int[] numArr = {0,1,2,3,4,5,6,7,8,9};
System.out.println(Arrays.toString(numArr);
// [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
for(int i = 0; i<100; i++){
int n = (int)(Math.random() * 10); // 0 ~ 9 중 한 값을 임의로 얻음.
//자리 바꾸기
int tmp = numArr[0];
numArr[0] = numArr[n];
numArr[n] = tmp;
}
System.out.println(Arrays.toString(numArr);
//[5, 8, 2, 7, 1, 6, 4, 9, 3, 0] - 난수이므로 매번 실행마다 달라짐!
String클래스 = char[] + 메소드(기능)
String a = "a";
String b = "b";
a = a+b;
//a = "ab";
| 메소드 | 설명 |
|---|---|
| char charAt(int index) | 문자열에서 해당 위치(index)에 있는 문자를 반환한다. |
| int length() | 문자열의 길이를 반환한다. |
| String substring(int from, int to) | 문자열에서 해당범위(from ~ to)의 문자열을 반환한다. (to는 포함 안 됨) |
| boolean equals(Object obj) | 문자열의 내용이 같은지 확인한다. 같으면 true. 다르면 false. |
| char[] toCharArray() | 문자열을 문자 배열(char[])로 변환해서 반환한다. |
커맨드 라인에 입력한 값이 문자열 배열에 담겨서 전달된다.
class EX5{
public static void main(String[] args) {
System.out.println("매개변수의 개수 : "+ args.length);
for(int i = 0; i<args.length; i++){
System.out.println("args["+i+"] = \" "+ args[i] + " \" ");
}
}
}
/*
..\java EX5(클래스이름) abc 123 "Hello world"
매개변수의 개수:3
args[0] = "abc"
args[1] = "123"
args[2] = "Hello world"
..\java EX5(클래스이름) //매개변수 입력x
매개변수의 개수:0
*/