배열
선언(참조변수, 레퍼런스 변수)
int[] score;
생성(공간 생성)
score = new int[5];
선언+생성
int[] score = new int[5]
선언+값저장
int[] score = {0, 1, 2, 3, 4}
double[] a = {0.01, 0.02, 0.03, 0.04}
배열의 길이
score.length
비정방형 배열의 길이
score[i].length
여기서 [5]는 배열의 인덱스라고 불림.(배열의 방 개수)
배열의 인덱스 범위는 = 5-1개
2차배열 [ ][ ]
score = new int[행][열];
[5]= score.length
[3]= score[i].length
△요런 크기의 배열인거임!
2차원배열의 이중반복문
for(int i=0; i<배열명.length; i++){
for(int j=0; j<배열명[i].length; j++)
}
}
섞기
public static void main(String[] args) {
int[] ball = new int[45];
int tmp = 0;
for(int i=0; i<ball.length; i++)
ball[i] = i +1;
for(int i=0; i<ball.length; i++) {
System.out.print(ball[i]+ " ");
}
System.out.println();
for(int i=0; i<6; i++) { //각 for문은 별개이므로 변수이름 같아도 상관X.
int j = (int)(Math.random()*45);
tmp = ball[i]; //섞기
ball[i]= ball[j]; //섞기
ball[j]= tmp; //섞기
}
for(int i=0; i<ball.length; i++) {
System.out.print(ball[i]+ " ");
}
}
가변배열(비정방형)
:마지막 차수의 크기를 지정하지 않고 각각 다르게 지정
public static void main(String[] args) {
int intArray[][] = new int[4][];
intArray[0] = new int[3];
intArray[1] = new int[2];
intArray[2] = new int[3];
intArray[3] = new int[2];
for (int i = 0; i < intArray.length; i++)
for (int j = 0; j < intArray[i].length; j++)
intArray[i][j] = (i + 1) * 10 + j;
for (int i = 0; i < intArray.length; i++) {
for (int j = 0; j < intArray[i].length; j++)
System.out.print(intArray[i][j] + " ");
System.out.println();
}
}
Arrays클래스
equals() ->1차원 비교
deepEquals() ->다차원 비교
toString() ->문자열로 바꿔줌
copyOf() ->복사
Arrays.copyOfRange() -> n~m까지 복사
sort() ->정렬(오름차순)
Arrays.toString(배열명) ->배열 출력
copyOf(), copyOfRange()
copyOf()는 배열의 전체를 복사하는 것이며 copyOfRange()는 배열의 일부를 복사하는 것이다.
int[] arr = {0,1,2,3,4};
int[] arr2 = Arrays.copyOf(arr, arr.length); // arr2=[0,1,2,3,4]
int[] arr3 = Arrays.copyOf(arr, 3); // arr3=[0,1,2]
int[] arr4 = Arrays.copyOf(arr, 7); // arr4=[0,1,2,3,4,0,0]
int[] arr5 = Arrays.copyOfRange(arr, 2, 4); // arr5=[2,3] <- 4는 포함되지 않는다.
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr4=[0,1,2,3,4,0,0]
fill(), setAll()
fill()은 배열의 모든 요소를 지정된 값으로 채운다. setAll()은 배열을 채우는데 사용할 함수형 인터페이스르 매개변수로 받는다. 이 메서드를 호출할 때는 함수형 인터페이스를 구현한 객체를 매개변수로 지정하던가 아니면 람다식을 지정해야한다.
int[] arr = new int[5]
Arrays.fill(arr, 9) // arr=[9,9,9,9,9]
Arrays.setAll(arr, i -> (int) (Math.random()*5)+1); // arr=[1,5,2,1,1]
sort(), binarySearch()
sort()는 배열을 정렬할 때 그리고 배열에 저장된 용소를 검색할 때는 binarySearch()를 사용한다. binarySearch()는 배열에서 지정된 값이 저장된 위치(index)를 찾아서 반환하는데 반드시 배열이 정렬된 상태여야지 한다.
int[] arr = {3, 2, 0, 1, 4}; // 정렬되지 않은 배열
int idx = Arrays.binarySearch(arr, 2); // idx=-5 <- 잘못된 결과
Arrays.sort(arr); // [0, 1, 2, 3, 4]
int idx = Arrays.binarySearch(arr, 2); // idx=2 <- 올바른 결과
equals(), toString(), deppEquals(), deppToString()
간단하게 비교하자면 toString() 1차원, deepToString() 다차원 배열 equals()도 1차원 deppEquals()는 다차원 비교 이다. 아래 소스를 보면 이해가 갈 것이다.
int[] arr = {0, 1, 2, 3, 4};
int[][] arr2D = { {11,12}, {21,22} };
Arrays.toString(arr) // [0,1,2,3,4]
Arrays.deepToString(arr2D) // [[11,12],[21,22]]
asList(Object o)
asList()는 배열을 List에 담아서 변환한다. 한가지 주의할 점은 asList()가 변환한 List의 크기를 변경할 수 없다는 것이다.
List list = Arrays.asList(new Integer[]{1,2,3,4,5})
List list = Arrays.asList(1,2,3,4,5)
list.add(6); // 에외 발생 List size 추가 및 삭제 불가
만일 추가 or 삭제를 하려면 List list = new ArrayList(Arrays.asList(1,2,3,4,5))의 형식으로 선언을 하면 list에 추가를 할 수 있다. 참고로 알아두자.
'JAVA' 카테고리의 다른 글
JAVA 변수의 종류 인스턴스변수, 클래스변수, 지역변수 (0) | 2022.07.16 |
---|---|
JAVA 예외 처리 try-catch-fianlly, throw (0) | 2022.07.13 |
JAVA break, continue, return, Loop (0) | 2022.07.09 |
JAVA for, do~for, while, for each (0) | 2022.07.09 |
JAVA if문, if else문, switch문 (0) | 2022.07.09 |