Chapter 5 배열

  • 배열의 복사는 for문 보다는 System.arraycopy()를 사용하는 것이 효율적임
    → System.arraycopy(num, 0, newNum, 0, num.length);
    → num[0]에서 newNum[0]으로 num.length개의 데이터를 복사
  • String 클래스는 char배열에 기능(메서드)을 추가한 것
  • 객체 배열
    -> Book[] book = new Book[5];
    -> book[0], book[1] ... 는 Book 각 객체의 주소값을 저장
    -> 배열 요소 5개가 아닌 객체 5개
    Book[] library = new Book[5];
    Book[] copyLibrary = new Book[5];

    library[0] = new Book("태백산맥", "조정래");
    library[1] = new Book("태백산맥1", "조정래");
    library[2] = new Book("태백산맥2", "조정래");
    library[3] = new Book("태백산맥3", "조정래");
    library[4] = new Book("태백산맥4", "조정래");

    System.arraycopy(library, 0, copyLibrary, 0, 5);

    // copyLibrary 배열 전체 길이만큼 돌면서 element를 하나씩 꺼내서 book 변수에 넣겠다.
    for(Book book : copyLibrary) {
        book.showBookInfo();
    }

1) 얕은 복사: System.arraycopy를 이용해서 주소를 복사함 (2개의 객체 array는 똑같은 것을 가리킴)
2) 깊은 복사: 하나하나 객체를 새로 만들어서 값을 대입해야함, 인스턴스가 구별되기 때문에 값이 바뀐다고 해서 원본에 영향을 미치지 않음

  • 향상된 for 문

      ArrayList<String> list = new ArrayList<>();
    
      list.add("aaa");
      list.add("bbb");
      list.add("ccc");
    
      for (int i = 0; i < list.size(); i++) {
          String str = list.get(i);
          System.out.println(str);
      }
    
      for (String str : list) {
          System.out.println(str);
      }

좋은 웹페이지 즐겨찾기