배열선언
- 항상 동적생성을 통해 선언과 동시에 생성가능
- new를 사용하면 기본값 자동초기화
- 자바에서 배열은 객체이다.
int[] num=new int[10];
int num[] =new int[10];
var num = new int[10];// var을 쓰면 [] 사용안함
배열의 용량
- public final int length가 정의되어있음(int형)
- Integer.MAX_VALUE가 최대 용량
- String에서는 .lengh() 메소드사용
int[] num = new int[0]; //길이가 0인 배열, null과다름
final 배열
- final로 배열을 선언한 경우 참조를 바꿀수는없지만 내부의 요소는 바꿀수있다.
final int[] num = new int[2];
num[1] = 2;
객체배열
- 다음은 Human 객체를 2개 생성한것이 아니라 Human 객체 2개를 저장할수있는 배열을 만든것이다.
Human[] hm1 = new Human[2];
- 각항은 null로 초기화되기때문에 객체를 생성하기 위해서는 새로 추가해줘야한다.
for(int i = 0; i < hm1.length; ++i) {
hm1[i] = new Human();
}
배열 초기화
- 배열로 초기값을 제공할때 new int[] 부분 생략가능
- var 사용할때는 초기값 목록 불가능함
- 배열 일부만 초기화 불가능함
- 초기값 개수에 의해 배열 용량이 결정됨
int[] num1 = new int[] {1,2,3};
int[] num2 = {1,2,3};
다차원 배열
int[][] a = new int[2][3]; //모든 행 용량이 같음
int[][] a1 = new int[][]{{1},{1,2,3},{1,2}}; //각행마다 용량이 다르므로 접근할때 주의
//a1[0][1]=20; 오류
배열 선택
- [] 연산자를 통해 색인
- 배열범위 벗어나면 런타임오류 ArrayIndexOutofBoundException
배열 복사
- 같은 타입이면 대입가능(복제가 아니라 같은 배열 참조한다는뜻)
int[] num={1,2};
int[] num2= num; //num,num2 둘다 같은 배열 참조
int[] num={1,2};
//용량 변경가능
int[] num1=Arrays.copyOf(num, num.length);
//일부 복제
//원본배열,시작위치,목적배열,목적배열시작위치,복사개수
int[] num2 = new int[num.length];
System.arraycopy(num, 0, num2, 0, num.length);
//같은 용량 복제
int[] num3 = num.clone();
배열 인자 전달
- 배열은 참조타입이라 내부를 조작하면 메소드가 끝나도 결과가 유지됨
- C++은 용량 또는 크기 정보전달해야하지만 Java는 동적할당이라 용량,크기 일치해서따로 안보내도됨
배열 반환
- Java는 동적할당이라 배열반환 가능
배열 for 반복
- 단, 이경우 element에 값을 복사 해서 주는것이기 때문에 element를 바꿔도 배열에 영향을 주지는않음
for(int element: list) {
//
}
문자배열
- 문자배열을 문자열로 변환가능
- 문자열처럼 출력도 가능
char[] chs = {'a','b'};
String s1 = new String(chs);
System.out.println(chs);//ab
가변인자 받을때
- type… 배열명으로 정의
- 가변인자사용,안사용되는것이 다중정의 되있으면 사용안되있는것을 우선으로선택
public static int fun(int… list){
}
public static int fun(int a,int b){//fun(1,2) 일때 우선 선택됨
}
Arrays
- java.util 에 정의됨
void sort(type[] a);//원시타입정렬
void sort(type[] a, int fromIndex, int toIndex);//범위내 정렬
void sort(T[] a, Comparator<? super T> c)//객체배열정렬
int binarySearch(type[] a, type v) //이진검색 v 찾기
void fill(type[] a, type v) //v로 초기화
boolean equals(type[] a1, type[] a2) //각 항 비교
type[] copyOf(type[] original, int newLength) //복사
ArrayList
- java.util에 정의됨
- 용량부족하면 자동으로 늘려줌(기본10)
- 색인연산불가능 ( .get(index) 사용 )
- .size() 로 요소개수확인
ArrayList<String> list1 = new ArrayList<String>(10);
'Language > JAVA' 카테고리의 다른 글
[Java] 문자열 (0) | 2024.12.03 |
---|---|
[JAVA] 빈 패턴(Bean Pattern) (0) | 2024.10.28 |
[Java] 예외처리 (0) | 2024.10.14 |