배열의 생성과 선언 배열을 인덱스
배열이란?
- 배열은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
- 저장 공간이 연속적임
- score라는 int배열이 생기고 인덱스로 접근가능함
배열의 선언과 생성
- 배열의 선언 - 배열을 다루기 위한 참조변수의 선언
- (변수는 선언하는 순간 생성되지만, 배열의 선언은 참조변수 선언.. 추후생성꼭 필요)
score = new int[5]
하는 순간 int[5] 공간 메모리 주소확보되며, 이후 score라는 참조변수가 이 메모리 주소를 가르킴
배열의 인덱스
배열의 인덱스 - 각 요소에 자동으로 붙는 번호
1 | int[] score; //배열 스코어 선언 |
배열의 길이, 배열의 초기화
- 배열이름.length - 배열의 길이(int형 상수)
- 배열은 한번 생성하면 그 길이를 바꿀수 없다.
1 | int[] score = new int[5]; //배열 생성 |
- 배열 길이 바꿀수없는이유:
배열은 메모리의 연속적인 공간이 필요한데, 만약 늘린다면, 다른곳으로 옮겨야한다. 따라서 막아놓음 - 배열 부족하면?
새로운것을 만들고 기존 배열에서 새걸로 옮겨야함
배열의 초기화
- 배열의 각 요소에 처음으로 값을 저장하는 것
- 배열은 자동으로 초기화됨 int>>0
1 | int[] score = new int[3]; |
배열의 출력
1 | int[] score; |
배열의 활용(총합과 평균)
1 | int sum =0; |
배열의 활용(최대값과 최소값)
배열의 활용(섞기)
int tmp= ~~
를 선언하면 선언+생성 되므로 메모리 저장됨.
1 | public static void main(String[] args) { |
String 배열의 선언과 생성
- String은 기본형아닌 참조형. 따라서 null값으로 초기화되어있다
- 생성방법
1 | String[] name = new String[]{"Kim","Park","vi"}; |
- 기본형이 아닌 참조형이므로, 원래는 해당 인덱스에 메모리에는 문자열 자체가 아닌 문자열이 저장된 메모리 주소를 담고있다.
커멘드 라인을 통해 입력받기
- args 활용
1 | public static void main(String[] args) { |
2차원 배열
- 데이터 형태의 데이터를 저장하기 위한 배열
1 | int[][] score = new int[4][3]; //4행 3열의 2차원 배열을 생성한다. |
- 2차원 배열 초기화
1 | int[][] arr = {{1,2,3},{4,5,6}} |
- 메모리 참조 그림(1차원배열이용하여 각 1차원배월 주소담음 구성)
- 참조 변수의 score의 각 요소는 score[0],score[1],score[2],score[3]이며
이들 참조변수가 가르키는 배열은 각각 1차원배열로 존재 - 1번째줄은 score[0]인 이름을 가진 배열이라고생각하면됨
- 즉 이차원배열은 1차원배열의 배열임
- 2차원 배열 접근 방식 아예 외우기
1 | for (int i = 0; i < score.length; i++) { |
String 클래스
- String클래스는 char와 메서드(기능)를 결합한것
String클래스 = char[] + 메서드(기능) - String 클래스는 내용을 변경할 수 없다(Read Only)
- 따라서 새로운 메모리에 결과값 할당후 a의 가르키는 주소를 변경
String 클래스 주요 메서드
1 | String str = "ABCDE"; |
Arrays로 배열 다루기
- 클래스
배열의 비교와 출력
- equals(), toString(), deeptoString()
1 | int[] arr = {0,1,2}; |
배열의복사
- copyOf(), copyOfRange()
- 복사할 요소의 갯수, range범위벗어나면 나머지 0이 저장됨
배열의 정렬
- sort()