객체지향 입문 - static 활용, 배열

겨울조아·2023년 3월 12일
0

Ch16. 싱글톤 패턴(static 활용)

School.java

public class School {
    // 학교는 하나만 있어야 함

    private static School instance = new School();

    // 한 개는 만들어야 하니까 내부에서 하나 만듦
    private School() {
    } // 외부에서는 만들 수가 없도록

    public static School getInstance() {
        if (instance == null) {
            instance = new School();
        }
        return instance;
    }


}

SchoolTest.java

import java.util.Calendar;

public class SchoolTest {

    public static void main(String[] args) {
        // 생성할 수 없고 오류가 나게 됨.
        //School s = new School();

        School school1 = School.getInstance();
        // 가져다 쓰기
        School school2 = School.getInstance();

        System.out.println(school1 == school2);
        // 같다

        // Calendar 클래스
        // 인스턴스 값이 유일해서 싱글톤으로 제공함
        // Calendar calendar = new Calendar();
        Calendar calendar = Calendar.getInstance();

    }

Ch17. 배열(array) - 자료를 순차적으로 한꺼번에 관리하는 방법

배열의 사이즈와 엘리먼트(요소)의 사이즈는 다르다

  double[] dArr = new double[5];
        dArr[0] = 1.1;
        dArr[1] = 2.1;
        dArr[2] = 3.1;
        double mtotal = 1;

        for(double dnum : dArr){
            // 처음부터 끝까지 무조건 돈다
            mtotal *= dnum;
        }
        System.out.println(mtotal);
        // 0이 나오게 됨
        // 4,5번째 데이터가 없어서 카운팅을 해줘야함, 초기화가 됨

        int count = 0;
        double[] ddArr = new double[5];
        ddArr[0] = 1.1; count++;
        ddArr[1] = 2.1; count++;
        ddArr[2] = 3.1; count++;
        double ddtotal = 1;

        for(int i = 0; i < count; i++){
            ddtotal *= ddArr[i];
        }
        System.out.println(ddtotal);
        // 7.16 어쩌고로 나오게 됨
        // 배열의 사이즈와 엘리먼트(요소)의 사이즈는 다르다

문자 배열

  char[] alphabets = new char[26];
        char ch = 'A';

        for(int i = 0; i < alphabets.length ; i++){
            alphabets[i] = ch++;
        }
        for(char alpha : alphabets){
            System.out.print(alpha + " ");
        }

Ch18. 객체 배열 사용하기

얕은 복사

public class ObjectCopy {  // 얕은 복사

    public static void main(String[] args) {

        Book[] library = new Book[5];
        Book[] copyLibrary = new Book[5];

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

        System.arraycopy(library, 0, copyLibrary, 0, 5);
        // library의 0번째부터, copyLibrary의 0번째부터 어디까지

        library[0].setTitle("나목");
        library[0].setAuthor("박완서");

        System.out.println("------Library------");
        for (Book book : library) {
            book.showBookInfo();
        }
        System.out.println("------copyLibrary------");
        for (Book book : copyLibrary) {
            book.showBookInfo();
        }
    }
}

깊은 복사

public class ObjectCopy2 { // 깊은 복사

    public static void main(String[] args) {

        Book[] library = new Book[5];
        Book[] copyLibrary = new Book[5];

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

        for (int i = 0; i < library.length; i++) {
            copyLibrary[i] = new Book();
            copyLibrary[i].setAuthor(library[i].getAuthor());
            copyLibrary[i].setTitle(library[i].getTitle());
        }

        library[0].setTitle("나목");
        library[0].setAuthor("박완서");

        System.out.println("-------Library------");
        for (Book book : library) {
            book.showBookInfo();
        }
        System.out.println("-------copyLibrary2------");
        for (Book book : copyLibrary) {
            book.showBookInfo();
        }
    }
}

Ch19. 객체 배열을 구현한 클래스 ArrayList

import ch18.Book;
import java.util.ArrayList;

public class ArrayListTest {

    public static void main(String[] args) {

        ArrayList<Book> list = new ArrayList<Book>();
        list.add(new Book("태백산맥1", "조정래"));
        list.add(new Book("태백산맥2", "조정래"));
        list.add(new Book("태백산맥3", "조정래"));
        list.add(new Book("태백산맥4", "조정래"));
        list.add(new Book("태백산맥5", "조정래"));

        for(int i = 0; i < list.size(); i++){
            list.get(i).showBookInfo();
        }
    }
}

0개의 댓글