배열
- 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
int score1, score2, score3, score4, score5;
int[] score = new int[5];
- 변수는 저장공간이 따로따로, 배열은 저장공간이 연속
- 배열의 선언 : 배열을 다루기 위한 참조변수의 선언
선언방법 | 선언 예 |
타입[] 변수이름 -- 이거를 더 선호 ** 나도 ^_^ | int [] score; String[] name; |
타입 변수이름[] | int score[]; String name[]; |
int [] score; // 참조변수 선언
score = new int[5]; // int 타입 값 5개를 저장할 수 있는 배열 생성
배열길이
- 배열이름.length - 배열의 길이 (int형 상수)
int[] arr = new int[5]; // 길이 5
배열은 한번 생성하면 실행 동안 그 길이를 바꿀 수 없다.
>> 왜 ?? 연속적인 메모리 선언
길이를 바꾸면 처음에 쓰던 메모리 뒤에 빈 곳이 있는지 알 수 없다.
따라서 늘릴 수 없어 부족하면 큰것을 새로 만들고 옮겨야한다.
배열 초기화
int[] score = new int[3];
score[0] = 50;
score[1] = 60;
score[2] = 70;
int[] score = new int[]{50,60,70};
int[] score = {50,60,70}; // new int[]생략가능
int[] score;
score = {50,60,70}; // new int[]생략가능 에러!
score = new int[]{50,60,70}; // 가능
배열의 출력
int[] iArr = {100, 90, 80};
System.out.println(iArr); // 배열의주소값 출력된다 [I@14318bb 와 같은 값
>> for문 이용하여 출력해야한다.
>> System.out.println(Arrays.toString(iArr)); // 배열의 내용을 문자열로 변환하여 출력해준다. [100, 90, 80] 이 출력된다.
예외로 char 배열은 값이 출력된다.
char[] chArr = {'a', 'b', 'c', 'd'};
System.out.println(chArr); // abcd 출력된다
2차원배열
- int [][] score = new int[4][3];
0 | 1 | 2 | |
0 | score[0][0] | score[0][1] | score[0][2] |
1 | score[1][0] | score[1][1] | score[1][2] |
2 | score[2][0] | score[2][1] | score[2][2] |
3 | score[3][0] | score[3][1] | score[3][2] |
2차원 배열 초기화
int[][] arr = new int[][]{{1,2,3},{4,5,6}};
int[][] arr = {{1,2,3},{4,5,6}};
String 클래스
- String 클래스는 char[]와 메서드(기능)를 결합한 것
String 클래스 = char[] + 메서드(기능)
문자 배열에 관련된 기능을 추가한 것
- String 클래스는 내용을 변경할 수 없다.
char charAt(int idx) : 문자열에서 해당 위치에 있는 문자를 반환한다.
int length() : 문자열의 길이를 반환한다.
String substring(int from, int to) : 문자열에서 해당 범위 문자열을 반환한다.
boolean equals(Object obj) : 문자열 내용이 같은지 확인한다. 같으면 true, 다르면 false
char[] toCharArray() : 문자열을 문자배열(char[])로 변환해서 반환한다.
Arrays로 배열 다루기
- 문자열 비교와 출력 - equals(), toString()
int[] arr = {0,1,2,3,4};
int[][] arr2D = {{11,12},{21,22}};
System.out.println(Arrays.toString(arr)); // [0, 1, 2, 3, 4]
System.out.println(Arrays.deepToString(arr2D)); // [[11, 12], [21, 22]]
String[][] str2D = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
String[][] str2D2 = new String[][]{{"aaa", "bbb"}, {"AAA", "BBB"}};
System.out.println(Arrays.equals(str2D,str2D2)); // false
System.out.println(Arrays.deepEquals(str2D,str2D2)); // true
- 배열의 복사 - 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] index가 2이상 4 미만
int[] arr6 = Arrays.copyOfRange(arr, 0, 7); // arr5=[0,1,2,3,4,0,0] index가 0이상 9 미만
- 배열의정렬 - sort()
int[] arr = {3,2,0,1,4};
Arrays.sort(arr); // 오름차순 정렬
'개발' 카테고리의 다른 글
Java - 추상클래스 (0) | 2021.06.05 |
---|---|
Java - 객체지향개념 (0) | 2021.05.30 |
Java - 변수 (0) | 2021.05.05 |
Java (0) | 2021.05.05 |
클라우드 컴퓨팅의 이점 (0) | 2021.04.08 |