Array
Array 알아보기
Array 란?
같은 타입의 여러 변수를 하나의 묶음으로 다루는 것
배열은 같은 타입의 기억공간을 하나의 이름으로 모아서 handling 할 수 있는 자료형이다.
위치 첨자가 따라다니는 변수
=> 위치 인덱스가 반드시 따라다님
배열 또한 Class이므로 method 쓸 수 있다
배열은 한번 size가 정해지면 resizing이 안된다!
Array의 단점
크기
를변경할 수 없다
확장이 필요할 경우 새로운 배열을 생성하여 복사해야 한다
실행 속도를 향상시키기 위해 배열의 크기를 크게 생성할 경우 메모리가 낭비된다
비순차적인 데이터
의추가/삭제
에 시간이 많이 걸린다차례대로 데이터를 추가하고 마지막의 데이터를 삭제하는 경우에는 굉장히 빠르나,
배열의 중간에서 값을 제거/추가할 때는 시간이 오래 걸린다
Array vs ArrayList & LinkedList
배열을 이러한 단점을 가지고 있고,
배열을 통해 List를 구현
한ArrayList
도 위와 같은 문제점들을 가지고 있다이러한 문제점을 보완하기 위해서 고안된 자료구조가 바로
LinkedList
이다배열은 모든 데이터가
연속적
으로 존재하는 반면,LinkedList
는불연속적
으로 존재하는 데이터를 서로 연결한 형태로 구성되었다
Array 사용하기
1. 선언
타입[] 변수이름;
ex)
2. 생성
변수이름 = new 타입[길이];
ex)
-> 배열의 선언과 생성을 한번에 했음
* 배열의 길이는 int범위의 양의 정수(0도 포함) 이어야 한다!
3. 초기화
: 배열은 생성과 동시에 자동적으로 자신의 타입에 해당하는 기본값으로 초기화되므로 사용하기 전에 따로 초기화를 해주지 않아도 되지만, 원하는 값을 저장하려면 각 요소마다 값을 지정해줘야함
ex)
Stack영역에 num이라는 기억공간 만들어줘
그리고 여기엔 정수가 들어갈꺼야
배열 선언한 순간 참조형 (reference type)
이 된다!!!
stack영역에 nums라는 주소 만들어줘
new니까 Heap 영역에 int type으로 방 5개 만들어
heap이니까 JVM이 관리
그러면 JVM에 의해 5개방에 각각 int 니까 0으로 default 초기화가 일어남
한번 이렇게 만들면 resizing 안됨
연속적인 공간을 할당 받는다는 보장을 받음
nums라는 배열의 사이즈 어떻게 되니?
Stack영역에 String이라는 기억 공간 만들어줘
그리고 여기엔 주소가 들어갈꺼야
reference type!
JVM에 의해 5개 방이 각각 null으로 default초기화 일어남
names의 0번째 방에 코드표 영역의 “홍길동”을 가리키는 주소가 저장됨
4. 배열 복사하기
Parameters :
source_arr : array to be copied from (원본 배열)
sourcePos : starting position in source array from where to copy
dest_arr : array to be copied in (복사할 배열)
destPos : starting position in destination array, where to copy in
length : total no. of components to be copied. (원본 배열의 크기)
5. 이차원 배열
일차원 배열의 주소를 모아서 만든 배열
이차원 배열은 일차원 배열이 가리키는 자료의 주소를 보관한다
배열을 생성하면 배열의 각 요소에는 배열요소 타입의 기본값이 자동으로 저장됨
2차원 배열은
행(row)
과열(column)
으로 구성되어 있기 때문에 index도 행과 열에 각각 하나씩 존재함행 index의 범위 = 0~행의 길이 -1
열 index의 범위 = 0~열의 길이 -1
이차원 배열의 length
String to char array
: .toCharArray();
(String …) vs String[]
(String ...) means you can add as much String param as you want
String[] is one parameter which is an array of strings.
Oracle에서 args 실행하기
Last updated