Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 이것이 자바다
- Algorithm
- 알기쉬운 알고리즘
- Selection Sorting
- R
- JSON
- 이스케이프 문자
- Graph
- list 컬렉션
- s
- insertion sort
- 윤성우 열혈자료구조
- coding test
- C 언어 코딩 도장
- stream
- C programming
- datastructure
- Serialization
- buffer
- 윤성우의 열혈 자료구조
- 메모리구조
- 혼자 공부하는 C언어
- Stack
Archives
- Today
- Total
Engineering Note
Java의 Array 본문
Array
- Array(배열)은 같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
배열의 선언과 생성
- 배열을 선언하는 방법은 원하는 타입의 변수를 선언하고 변수 또는 타입에 배열임을 의미하는 대괄호[]를 붙이면 된다. 대괄호[]는 타입 뒤에 붙여도 되고 변수이름 뒤에 붙여도 된다. 하지만 Java 에서는 타입에 붙이는 쪽이 많다. 대괄호가 변수이름의 일부라기보다 타입의 일부라고 보는 경우가 많기 때문이다.

int[] score; //배열 선언(배열을 다루기 위한 참조변수 선언) score = new int[5]; //배열을 생성(실제 메모리 저장공간 생성)- 선언과 생성 단계별로 하기배열의 선언
- int[] score;
- int형 배열 참조변수 score를 선언한다. 데이터를 저장할 수 있는 공간은 아직 마련되지 않았다.
-

- score = new int[5];
- 연산자 'new'에 의해서 메모리의 빈 공간에 5개의 int형 데이터를 저장할 수 있는 공간이 마련된다.

- 그리고 각 배열 요소는 자동적으로 int의 기본값(default)인 0으로 초기화 된다.

- 끝으로 대입 연산자'+'에 의해 배열의 주소가 int형 배열 참조변수 score에 저장된다.

- 이제 참조변수 score를 통해서 생성된 배열에 값을 저아하거나 읽어 올 수 있다. 이 배열은 '길이가 5인 int배열'이며, 참조변수의 이름을 따서 '배열 score'라고 부르면 된다.
- 배열의 생성
- 선언과 생성을 동시에 하기배열 선언 생성 동시에
- int score = new int[5];
배열의 길이와 인덱스
- 생성된 배열의 각 저장공간을 '배열의 요소(element)'라고 하며, '배열이름[인덱스]'의 형식으로 배열의 요소에 접근한다. 인덱스(index)는 배열의 요소마다 붙여진 일련번호로 각 요소를 구별하는데 사용된다. 변수의 이름을 지을 때 score1, score2, score3과 같이 번호를 분이는 것과비슷하다고 할 수 있다.
- 주의할 점은 배열의 인덱스는 1이 아닌 0부터 시작한다.
- 인덱스의 범위는 0부터 '배열의길이 -1까지'

- 배열의 값을 저장하고 읽어오는 방법은 변수와 같다. 단지 변수이름 대신 '배열이름[인덱스]'를 사용한다는 점만 다르다.
score[3] = 100; int value = score[3];
- 반복문을 이용해서 한번에 값을 할당 할 수도 있다.
for (int i = 0; i < 5;++i){ score[i] = i*10;
//score[0] = 0;
//score[1] = 10;
//score[2] = 20;
//score[3] = 30;
//score[4] = 40;
## 배열의 초기화
* Java에서 배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화가 된다.
* - 정수 : 0
* - 실수 : 0.0
* - 논리형 : false
* - 문자 : 공백 ( 공백문자 \u0000)
* 위 처럼 초기화가 되기 때문에 배열을 초기화 해주지 않아도 되지만, 원하는 값을 저장하려면 아래와 같이 각 요소 마다 값을 지정해 줘야한다.
```java
int[] score = new int[5];
score[0] = 10;
score[1] = 20;
score[2] = 30;
score[3] = 40;
score[4] = 50;
- 위의 방법은 배열을 선언하고 생성하고 기본값(0)으로 초기화가 된 후에 사용자가 원하는 값으로 다시 초기화를 해주었지만 배열의 생성과 초기화를 동시에 할 수도 있다.
int[] score = new int[]{10,20,30,40,50};- 저장할 값들을 괄호{} 안에 쉼표로 구분해서 나열하면 되며, 괄호{} 안의 값의 개수에 의해 배열의 길이가 자동으로 결정되기 때문에 괄호[]안에 배열의 길이는 적어주지 않아도 된다.
- 조금 더 간단한 방법도 있다. 'new 타입[]' 코드를 생량하고 초기화를 해줄 수 도 있다.
int[] score = {10,20,30,40,50};- 하지만 선언과 생성을 따로하는 경우에는 new 타입[]' 코드를 생량할 수 없다.
int[] score; // score = {10,20,30,40,50}; //에러 score = new int[]{10,20,30,40,50}; //OK- 또 다른 예로, 아래와 같이 매개변수로 int 배열을 ㅂ다는 add메서드가 정의 되어 있고 이 메서드를 호출해야할 경우 역시 'new 타입[]'을 생략할 수 없다. 이유는 당연히 이 경우도 생성과 선언을 따따로 해주는 경우로 볼 수 있기 때문이다.
int add(int[] arr){ /* 내용 생략*/} // add 함수 선언 int result = add({10,20,30,40,50}); // 에러 int result = add(new 타입[]{10,20,30,40,50});
참고자료: 자바의 정석(저자 남궁 성)
'Programming Language > Java' 카테고리의 다른 글
| Window에 Java 파일 여러개 설치 feat batch (0) | 2022.08.03 |
|---|---|
| [Java] this 키워드 (0) | 2022.08.02 |
| [Java] 변수의 scope와 static (0) | 2022.07.09 |
| [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 자바와 절차적/구조적프로그래밍 (0) | 2022.04.22 |
| [스프링 입문을 위한 자바 객체 지향의 원리와 이해] 기계어에서 객체 지향 프로그래밍 언어로 (0) | 2022.04.21 |
Comments