Language/Java

'Do it 자바프로그래밍 입문' 7장 정리

ABCD 2022. 9. 12.

목차

배열(Array)

  • 여러개의 변수를 일일이 쓰지 않고 사용하는 자료형

배열요소

  • 배열을 이루는 가각의 자료

배열선언방식

'Do it 자바프로그래밍 입문' 7장 정리

인덱스 연산자 [ ]

  • 배열 요소가 저장된 위치를 찾아주는 역할

배열 초기화 하기

1. int[ ] studentIDs = new int[ ] {101, 102, 103}; // 개수는 생략
2. int[ ] studentIDs = new int[ 3 ] {101, 102, 103}; // 개수 생략하지 않아 오류
3. int[ ] studentIDs = {101, 102, 103}; // 요소가 3개인 배열 생성
4. int[ ] studentTDs;
int[ ] studentIDs = new int[ ] {101, 102, 103};
// 자료형을 우선 선언하고 초기화하는 경우 new int[ ] 생략할 수 없음

배열순서

  • 0부터 n-1번까지 ( total : n개 )

length

  • 배열의 길이를 나타냄 ( 전체 요소 개수 )
  • 배열의 전체 길이만큼 반복수행시 length 속성을 사용

size

  • 유효한 값의 개수를 나타낼 때 사용
  • ex)
double[ ] data = new double[5];
int size = 0;
data[0] = 10.0; size++;
data[1] = 20.0; size++;
data[2] = 30.0; size++;
for(int i = 0; i < size; i++){
System.out.println(data[i]);

배열 복사하기

  • 방법 1 : for문을 사용하여 복사
  • 방법 2 : System.arraycopy( ) 메서드를 사용하여 복사
  • System.arraycopy(src, srcPos, dest, destPos, length)

'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리

얕은 복사

  • 인스턴스 자체가 아닌 인스턴스의 주소값을 복사
package array;
public class ObjectCopy2 {
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("태백산맥", "조정래");
bookArray1[1] = new Book("데미안", "헤르만 헤세");
bookArray1[2] = new Book("어떻게 살 것인가", "유시민");
System.arraycopy(bookArray1, 0, bookArray2, 0, 3);
for ( int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookinfo();
}
bookArray1[0].setBookName("나목"); // bookArray1 배열의 첫번째
bookArray1[0].setAuthor("박완서"); // 요소 값 변경
System.out.println("===bookArray1===");
for ( int i = 0; i < bookArray1.length; i++) {
bookArray1[i].showBookinfo();
}
System.out.println("===bookArray2===");
for ( int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookinfo(); // bookArray2 배열 요소 값도 변경되어 출력
}
}
}

'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리

깊은 복사

  • 인스턴스를 따로 관리할 때 직접 인스턴스를 만들고 그 값을 복사
package array;
public class ObjectCopy3 {
public static void main(String[] args) {
Book[] bookArray1 = new Book[3];
Book[] bookArray2 = new Book[3];
bookArray1[0] = new Book("태백산맥", "조정래");
bookArray1[1] = new Book("데미안", "헤르만 헤세");
bookArray1[2] = new Book("어떻게 살것인가", "유시민");
bookArray2[0] = new Book(); //
bookArray2[1] = new Book(); //디폴트 생성자로 bookArray2의 배열 인스턴스 생성
bookArray2[2] = new Book(); //
for(int i = 0; i < bookArray1.length; i++) { //
bookArray2[i].setBookName(bookArray1[i].getBookName());//1을 2에 복사
bookArray2[i].setAuthor(bookArray1[i].getAuthor());//
}
for(int i= 0; i < bookArray2.length; i++) {
bookArray2[i].showBookinfo(); // bookArray2 출력
}
bookArray1[0].setBookName("나목"); // 첫번째 배열의
bookArray1[0].setAuthor("박완서"); // 요소 값 수정
System.out.println("===bookArray1===");
for(int i = 0; i < bookArray1.length; i++) {
bookArray1[i].showBookinfo();
}
System.out.println("===bookArray2===");
for(int i = 0; i < bookArray2.length; i++) {
bookArray2[i].showBookinfo();
}
}
}

'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리

얕은복사와 깊은복사의 차이??

  • 깊은 복사에서는 디폴트 생성자를 사용하여 인스턴스를 생성하고 거기에 자료를 복사하는 방식?? (확실하지 않다.)

향상된 for문

  • 배열의 처음 ~ 끝까지 모든 요소를 참조할 때 용이

'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리

 

 

 

 

 

 

 

 

 

 

다차원 배열

  • 수학의 평면 ( x, y) 을 나타내는 것처럼 이차원 이상으로 구현하는 배열

이차원 배열

'Do it 자바프로그래밍 입문' 7장 정리
'Do it 자바프로그래밍 입문' 7장 정리

 

 

 

arr.length

  • 행의 갯수

arr[i].length

  • 열의 갯수

'Do it 자바프로그래밍 입문' 7장 정리

 

'Do it 자바프로그래밍 입문' 7장 정리

 

ArrayList 클래스

  • 객체 배열을 고나리할 수 있는 멤버 변수와 메서드를 제공하는 클래스

ArrayList 중 주로 사용하는 메서드

  • int size( ) - 배열에 추가된 요소 전체 개수를 반환
  • E get(int index) - 배열의 index 위치에 있는 요소값을 반환
  • boolean add(E e) - 요소하나를 배열에 추가
  • boolean isEmpty( ) - 배열이 비어 있는지 확인
  • E remove(int index) - 배열의 index위치에 있는 요소값을 제거하고 그 값을 반환

ArrayList 기본 형식

ArrayList<E> 배열 이름 = new ArrauList<E>();
  • <E>는 객체의 자료형

임포트(import)

  • 내 코드에 없는 클래스를 가져와 사용할 때 이 클래스가 어디에 구현되고 있는지를 알려주기 위해 코드 맨 위에 선언하는 것
  • ArrayList를 사용하려면 'import java.util.ArrayList;' 문장을 반드시 작성해야 한다.
728x90
반응형

댓글