Hayden's Archive
[자바/Java] 배열 본문
- 배열(Array): 같은 데이터 타입(Same Data Type)을 가지는 서로 다른 값들이 하나의 변수로 처리되는 것
===> 데이터 타입이 다르면 하나로 못 묶는다.
- 값이 5개 있으면 변수도 5개 선언되어야 한다. 근데 값이 100개 있다고 변수도 100개 선언하면 비효율적. 그래서 배열이 필요한 것.
- 배열은 1. 선언 2. 생성 3. 초기화
- 배열도 객체에 해당. 객체는 반드시 기본값을 가지므로 배열도 기본값이 있다. 또 배열도 객체이므로 new 연산자를 통해 만들어내며, 배열 또한 값이 heap에 저장된다. ( 참고 : https://xxxelppa.tistory.com/75 )
- 기본형 타입의 배열에는 값이 바로 들어감.(ex. int 타입 배열)
1. 선언 2. 생성 |
1. 선언과 생성 int[] arr = new int[3]; 2. 초기화 arr[0] = 11; |
1. 선언 + 생성 + 초기화를 한꺼번에 int [ ] arr = {11, 22, 33}; |
int [ ] arr = {11,22,33};
System.out.println(arr); // 배열의 주소값이 출력됨
// 배열은 순서가 있는데 순서가 있는 것들은 내부적으로 index로 관리된다.
for(int i=0; i<arr.length; i++) { //length()가 아니다. 함수가 아니라 필드!
System.out.print(arr[i]+ " ");
}
System.out.println(); // print는 연달아 찍히고 println 하면 다음 줄에 찍힘
// 자바에서는 향상된 for문으로 더 많이 쓴다. 뭐가 어디 안에서 돌아가는가?
for(int val : arr) { // 배열 arr 안에 있는 값들이 val에 할당됨
System.out.print(val + " ");
}
- 배열은 자바에서 기본적으로 제공하는 라이브러리. 배열 또한 객체이고 length 필드 하나만 있다. (참고 : https://chibychi.blogspot.com/2019/01/java-size-length-length.html )
- 배열은 생성할 때 사이즈를 넣게 되어 있다. 그런데 배열은 Resizing이 안 된다. 만약에 사이즈를 변경하면 아예 새로운 배열 객체가 생성된다.
- 예를 들어 int [ ] arr2 = {11, 22, 33};인 배열이 있다고 할 때, arr2 = new int[5];로 사이즈를 재조정해주고 arr2[3]=44; arr2[4]=55; 를 초기화하더라도 arr2가 아예 새로운 값들을 가리키게 되었으므로 사용자가 따로 초기화하지 않은 arr[0], arr[1], arr[2]는 기본값 0을 가진다.
출처 : http://nlp.jbnu.ac.kr/PL/ch04.pdf
- 클래스 데이터 타입 배열에는 기본형 타입 배열과 달리 값이 안 들어가고 값을 참조하는 주소값이 들어간다.
1. Product 타입 배열 선언과 생성 → 배열의 주소값 할당
|
- 참조변수는 stack에만 있다는 편견을 가지지 마라. 배열 자체는 stack에서 참조하지만, 각각의 항목들은 heap 안에서 주소값을 가지고 heap 안에서 객체를 참조함.
- 배열의 복사 ==> System.arraycopy()
int [ ] target = {1,2,3,4,5,6};
int [ ] source = {10,9,8,7,6,5,4,3,2,1};
System.arraycopy(source, 2, target, 1, 3);
// 배열 source에서 복사해올 건데
// 2번째 값(8)부터 복사할 것이다.
// 그리고 그걸 배열 target에 붙여넣기 할 건데
// 1번째 인덱스 자리(2)부터 붙여넣을 것이며
// 연달아서 3개를 붙여넣을 것이다.
// (2,3,4 --> 8,7,6)
// 이렇게 되면 배열 target에서 -> 0,4,5번째 인덱스는 그대로임.
for(int i : target) System.out.print(i + " ");
//1 8 7 6 5 6 출력
배열의 추가, 제거, 수정
PK(Primary Key : 기본키) 참고 : https://terms.naver.com/entry.nhn?docId=3431150&cid=58430&categoryId=58430
CRUD 관련 포스팅 : https://hayden-archive.tistory.com/64?category=775409