배열
- 배열 선언 시 미리 타입, 공간의 길이를 지정 -> 파이썬과 달리 유기적으로 늘어나지 않음.
- 길이를 지정하지 않으면 컴파일 오류 발생
<배열의 선언>
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
}
}
'컴퓨터 > JAVA' 카테고리의 다른 글
[java] HashSet() (0) | 2023.05.22 |
---|---|
[java] toCharArray() (0) | 2023.05.18 |
[java] [Error] no suitable method found for sort(int[],java.util.Comparator<java.lang.Object>) (0) | 2023.05.05 |
[java] stack 구현 (0) | 2023.05.04 |
[java] 문자열 한 글자 씩 자르기 (0) | 2023.05.03 |