본문 바로가기

컴퓨터/JAVA

[java] 배열 문법 정리

배열

- 배열 선언 시 미리 타입, 공간의 길이를 지정 -> 파이썬과 달리 유기적으로 늘어나지 않음.

- 길이를 지정하지 않으면 컴파일 오류 발생

 

<배열의 선언>

int[] arr = new int[3];
int arr1[] = {1,2,3,4};
int[] arr2 = {1,2,3,4};


String[] name = new String[3];
String[] name2 = {"one", "two"};

 

<배열의 출력>

 

자바의 출력문은 System.out.println()을 입력하여 배열을 출력한다면 메모리에 있는 배열의 주소값을 출력한다.

따라서 Arrays.toString()을 이용하여 배열을 출력해야한다.

2차원 배열의 경우 Arrays.deeptoString()을 이용하여 한 번에 출력할 수 있다.

*Arrays는 java.util 패키지에 속해 있어 사용시 import 를 해주어야 하며, 모두 static 메소드이므로 객체 생성을 하지 않고 사용가능하다. 

*char 형 배열은 예외로, 문자의 경우는 바로 출력 가능하다.

import java.util.Arrays;

class Test{
	public static void main(String[] args){
    	int[] arr = {1,2,3,4};
        
        for(int i=0;i<arr.length;i++){
        	System.out.println(Arrays.toString(arr));	// [1,2,3,4]
        }
    }
}

 

 

 

<배열의 확장과 복사>

 

자바의 배열은 선언 후에 공간을 늘릴 수 없으므로 복사를 이용하여 확장한다.

1. 공간이 큰 배열을 만든다.

2. 기존의 배열을 1의 배열에 복사한다.

 

배열의 복사는 for문을 이용하거나 여러 메소드를 사용한다.

 

- for문

import java.util.Arrays;

class Test{
	public static void main(String[] args){
    	int[] arr = {1,2,3,4};
        
        int[] arr2 = new int[arr.length*3];
        
        for(int i=0;i<arr.length;i++){
        	arr2=arr[i];	
        }
    }
}

 

- Object.clone()

public class Arr{
	public static void main(String[] args){
    	int[] a={1,2,3,4};
        int[] b = a.clone();
    }
}

 

- Arrays.copyOf()

import java.util.Arrays;

public class Arr{
	public static void main(String[] args){
    	int[] a={1,2,3,4};
        int[] b = Arrays.copyOf(a, a.length);	//a를 a.length 길이만큼 복사
    }
}

- Arrays.copyOfRange()

public class Arr{
	public static void main(String[] args){
    	int[] a={1,2,3,4};
        int[] b = Arrays.copyOfRange(a,0,1);	//a의 idx 0부터 1까지 복사
    }
}

- System.arrayCopy()

public class Arr{
	public static void main(String[] args){
    	int[] a={1,2,3,4};
        int[] b = new int[a.length];
        System.arrayCopy(a,0,b,0,a.length);
        
        //a - 복사할 배열
        //0 - 복사 시작 위치
        //b - 붙여넣을 배열
        //0 - 복사된 값들이 붙여질 시작 위치
        //a.length - 지정된 길이만큼 복사
    }
}

 

<배열 정렬>

 

Arrays.sort()를 사용하여 정렬한다. (새로운 배열을 반환x)

import java.util.Arrays;

public class Arr{
	public static void main(String[] args){
    	int[] a={1,3,2,4};
		
        //오름차순
        Arrays.sort(a);
        
        //내림차순
        Arrays.sort(a, Collections.reverseOrder());
        
        //부분정렬
        Arrays.sort(a, 1, 3); 	// 인덱스 1~2까지 정렬 [1,2,3,4]
        
    }
}

 

 

<배열 비교>

 

Arrays.equals() 메소드를 이용하여 배열 비교한다.

2차원 배열의 경우 Arrays.deepEquals()를 사용하여 비교한다.

import java.util.Arrays;

public class Arr{
	public static void main(String[] args){
    	int[] a={1,3,2,4};
        int[] b={1,3,1,1};
        
        Arrays.equals(a,b);	//false   
    }
}
728x90