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 |
Tags
- RDF
- 자바
- java
- node
- Groovy
- 스크럼
- node.js
- socket.io
- Stream
- 예제
- Knowledge Graph
- 스크럼 마스터
- 노드
- 노드js
- 스레드
- Router
- 개발자
- nodejs
- scrum
- 특징
- benchmark
- 소켓
- 이벤트 루프
- C++
- Django
- express
- 파헤쳐보자
- Python
- ngrinder
- 지식 그래프
Archives
- Today
- Total
라봉이의 개발 블로그
java의 정석 5강. 배열 본문
반응형
배열은 c++과 유사한 점이 많으니 특징과 다른 점만 짚고 넘어가도록 하겠다.
1.1 배열의 생성
배열을 생성하기 위해서는 연산자 new와 함께 배열의 타입과 크기를 지정해 주어야 한다.
int[] data;
data = new int[5];
1.2 배열의 초기화
배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화된다.
int[] data = new int[5];
System.out.println(data[0]); // 0
변수의 타입에 따른 기본값은 다음과 같다.
자료형 |
기본값 |
boolean |
false |
char |
'\u0000' |
byte |
0 |
short |
0 |
int |
0 |
long |
0L |
float |
0.0f |
double |
0.0 or 0.0d |
참조형 변수 |
null |
배열을 초기화 하는데 두 가지 방법을 제공한다.
int[] data = {100, 90, 80, 70}; // 1번
int[] data = new int[]{100, 90, 80, 70} // 2번
두 문장이 같은 결과를 낼 때도 있지만 경우에 따라 2번과 같은 초기화가 필요하다.
아래의 코드에서 볼 수 있듯이 선언과 초기화를 따로 해야하는 경우에는 반드시 2번 방식으로 배열을 초기화해야 한다.
int[] data;
data = {100, 90, 80, 70}; // 오류 발생!!
int[] data2;
data2 = new int[4]{100, 90, 80, 70}; // okay!!
1.3 다차원 배열
2차원 배열의 선언방법은 다음과 같다.
int[][] data;
1차원 배열에서와 같이 중괄호{}를 이용해서 2차원 배열의 생성과 초기화를 동시에 할 수도 있다.
int[][] data = new int [][] {
{100, 100, 100},
{20, 20, 20},
{50, 50, 50},
{60, 30, 80},
{50, 40, 50}
}; // int[][] data = new int[5][3];으로 생성된다.
1.4 배열의 복사
배열은 한번 생성하면 그 크기를 변경할 수 없기 때문에 더 많은 저장공간이 필요하다면 보다 큰 배열로 새로 만들고 이전 배열로부터 내용을 복사해야한다.
배열을 복사하기 위해 for문을 돌리거나 System 클래스의 arraycopy를 사용하면 된다.
for문은 대충 알 것이고 arraycopy는 다음과 같이 사용하면 된다.
int[] number = {1, 2, 3, 4, 5};
int[] newNumber = new int[10];
// src: 복사할 원본 배열, dst: 복사할 배열, pos: 복사를 시작할 위치, length: src의 복사 길이
// arraycopy(src, src.pos, dst, dst.pos, length)
System.arraycopy(number, 0, newNumber, 0, number.length);
// => number[0]에서 number.length 개의 데이터를 newNumber[0]부터 복사
반응형
'Java > Java의 정석 읽고 정리' 카테고리의 다른 글
java의 정석 7강. 객체지향프로그래밍2(중) (0) | 2018.06.01 |
---|---|
java의 정석 7강. 객체지향프로그래밍2(상) (0) | 2018.05.29 |
java의 정석 6강. 객체지향프로그래밍1 (0) | 2018.05.28 |
java의 정석 2강. 변수 (0) | 2018.05.27 |
java의 정석 1강. 자바를 시작하기 전에 (0) | 2018.05.24 |
Comments