1. 자바 배열 선언하기
자료형[] 배열이름 = new 자료형[배열의 크기];
int array[];
int[] array;
위에 와 같이 선언은 되지만
int array[5];
크기 지정이 안되기 때문에 위에와 같이 선언하면 오류가 발생함.
그렇기 때문에
public class Hello{
public static void main(String[] args) {
int[] array_v1 = new int[5];
array_v1[0] = 20;
array_v1[1] = 40;
array_v1[2] = 60;
array_v1[3] = 80;
array_v1[4] = 100;
int[] array_v2 = {10, 30, 60, 90, 120};
int[] array_v3 = new int[] {5, 10, 15, 20, 25};
int[] array_v4;
array_v4 = new int[5];
array_v4[0] = 20;
array_v4[1] = 40;
array_v4[2] = 60;
array_v4[3] = 80;
array_v4[4] = 100;
}
}
이렇게 선언할 수 있다.
2. 배열 정렬
전 c언어에서는 정렬을 하기 위해서는 보통 2중 for문을 사용하곤 했다. 하지만 자바에서는 Arrays.sort(배열이름)이라는 이 한 문장으로 오름차순 배열을 할 수 있다.
적용
import java.util.Arrays;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int array[] = new int[5];
System.out.println("양수 5개를 입력하세요.");
for(int i=0; i<5; i++)
array[i] = scanner.nextInt();
Arrays.sort(array);
System.out.println("가장 큰 수는 " + array[4] + "입니다.");
scanner.close();
}
}
결과
양수 5개를 입력하세요.
30 20 24 56 18
가장 큰 수는 56입니다.
3. 다차원 배열
자바에서 다차원 배열은 c에서의 다차원 배열과 매우 비슷한 모습을 볼 수 있다.
다만, 다른 점이 하나 있다면 배열을 선언하는 부분이다.
적용
import java.util.Arrays;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
int[][] array = new int[3][4]; //2차원 배열선언
int i, k;
int val = 1;
for(i=0; i<3; i++) {
for(k=0; k<4; k++) {
array[i][k] = val;
val ++;
}
}
System.out.println("array[0][0]부터 array[2][3]까지 출력");
for(i=0; i<3; i++) {
for(k=0; k<4; k++) {
System.out.printf("%3d", array[i][k]);
}
System.out.println("\n");
}
}
}
결과
array[0][0]부터 array[2][3]까지 출력
1 2 3 4
5 6 7 8
9 10 11 12
4. System.arraycopy()
System.arraycopy(src, srcPos, dest, destPos, length);
src : 복사하고자 하는 소스, 원본
srcPos :위의 소스에서 어느 부분부터 읽어올지 위치를 정함.
dest : 복사하려는 대상
destPos : 위에 dest에서 자료를 받을 때, 어느 부분부터 쓸지 시작위치를 정함.
length : 원본에서 복사본까지 얼마큼 읽어 올지 입력
적용
import java.util.Arrays;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
int[] array = {10,30,50,70,90,60};
int[] array2 = new int[4];
System.arraycopy(array, 2, array2, 1, 3);
for(int i=0; i<array2.length; i++) {
System.out.println("array["+i+"] = " + array2[i]);
}
}
}
결과
array[0] = 0
array[1] = 50
array[2] = 70
array[3] = 90
5. Arrays.copyof()
Arrays.copyof(Object dest, int length)
Object dest : 복사하려는 대상
int length : dest에서 시작해서 몇 개의 길이 만큼 복사할지 길이를 정함.
적용
import java.util.Arrays;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
int[] array = {10,30,50,70,90,60};
int[] array2 = Arrays.copyOf(array,3);
for(int i=0; i<array2.length; i++) {
System.out.println("array["+i+"] = " + array2[i]);
}
}
}
결과
array[0] = 10
array[1] = 30
array[2] = 50
6. for - each
배열이나 나열의 언소를 순차 접근하는데 유용한 for 문
for(변수 : 배열 레퍼런스){
for문 내용
}
for - each 문으로 정수 배열의 합을 구하는 예시
int [] n = {1,2,3,4,5};
int sum = 0;
for(int k : n) {
sum += k;
}
적용
import java.util.Arrays;
import java.util.Scanner;
public class Hello{
public static void main(String[] args) {
int[] n = {1,2,3,4,5};
int sum =0;
for(int k : n) {
System.out.print(k + " ");
sum += k;
}
System.out.println("합은 " + sum);
String f[] = {"사과 ", "배", "바나나", "체리", "딸기", "포도"};
for(String s: f) {
System.out.print(s + " ");
}
}
}
결과
1 2 3 4 5 합은 15
사과 배 바나나 체리 딸기 포도