POWER JAVA Lastterm

2400·2023년 12월 13일

POWER_JAVA

목록 보기
4/4

05

  1. 가비지 컬렉션, 인스턴스 멤버와 정적멤버의 차이

    -인스턴스 멤버는 객체가 더 이상 참조되지 않으면 해당 객체의 인스턴스 변수 및 메소드도 함께 가비지 컬렉션 대상이 됨
    -클래스가 로드되고 언로드될 때까지 존재함
    -인스턴스 멤버는 객체를 생성한 후에 접근할 수 있으며 객체에 따라 다른 값을 가집니다.
    정적 멤버는 클래스 이름을 통해 접근하며 모든 객체가 동일한 값을 공유합니다.

  1. 일반배열과 객체배열(8장 wrapper 클래스 참조)의 사용
    #일반배열
    정수형 배열
    int[] intArray = new int[5];
    intArray[0] = 1;
    intArray[1] = 2;
    intArray[2] = 3;
    실수형 배열
    double[] doubleArray = {1.1, 2.2, 3.3};
    문자형 배열
    char[] charArray = new char[3];
    char[] charArray = {'a', 'b', 'c'};
    논리형 배열
    boolean[] booleanArray = {true, false, true};
    -------------------------*
    #객체배열
    public class ObjectArrayExample {
        public static void main(String[] args) {
            // Integer 객체 배열
            Integer[] integerArray = new Integer[3];
            integerArray[0] = new Integer(1); // 또는 integerArray[0] = 1; (오토박싱)
            integerArray[1] = new Integer(2);
            integerArray[2] = new Integer(3);
            // Double 객체 배열
            Double[] doubleArray = {1.1, 2.2, 3.3};
            // 출력
            System.out.println("Integer 객체 배열:");
            for (Integer i : integerArray) {
                System.out.print(i + " ");
            }
            System.out.println("\nDouble 객체 배열:");
            for (Double d : doubleArray) {
                System.out.print(d + " ");
            }
        }
    }
    -------------------*------------------------
            int[] array = {1,2,3,4,5};
            int [] array2 = new int [3];
            array2[0]= 1;
            Integer [] array3 = new Integer[3];
            array3[0] = new Integer(3);
            array3[1] = 3;  //이게 오토박싱  정수를 객체로
            System.out.println(array3[1]+1); //이것도 오토박싱, 객체를 정수로
            Integer[] array4 = {1,2,3,4,5};

06

  1. 상속의 이유

    상속의 이유: 이미 구현된 클래스의 코드를 재사용하여 새로운 클래스를 생성할 수 있기에 코드 재사용에 유용하다.
    다형성을 구현하는데 기여한다,계층구조를 설계할 수 있다.

  2. 상속 시 부모 생성자도 호출되는 이유/ 과정(힙메모리 상태 제시)

    상속을하면 자식클래스의 객체가 힙 메모리에 할당이 된다. 이때 힙메모리에는 부모 클래스에서 상속된 부분이 들어있기에 자식 클래스 안의 부모 클래스 부분을 초기화를 해야한다. 따라서 부모생성자를 호출하여 부모 클래스 필드를 초기화하고 자식 클래스의 초기화를 해야하기때문에 부모 생성자의 호출이 필요하다.

  3. 오버라이딩, 다형성(업캐스팅, 다운캐스팅의 장점)
    코딩은 상속+오버라이딩+다형성의 혼합형태로 예정

    오버라이딩 장점: 다형성을 구현하는데 기여하기에 코드의 재사용성을 증가시킨다.코드 가독성,유지보수성 향상
    업캐스팅 장점:
    업캐스팅은 다양한 객체를 동일한 부모 클래스 타입으로 다루어 코드의 일관성을 제공하며, 확장성과 유지보수성을 향상시킵니다.
    다운캐스팅 장점: 다운캐스팅은 업캐스팅된 객체를 원래의 자료형으로 되돌려, 하위 클래스에만 있는 기능을 활용하기 위해 사용됩니다. 이는 유연성과 특정 기능 활용을 가능하게 한다.

  1. 구성: 출제 안함

07

  1. 추상클래스의 정의와 구현(코딩)

    추상클래스는 하나 이상의 추상 메소드를 포함하며, 일반적인 메소드와 필드도 가질 수 있는 클래스
    +구현코딩

  2. 인터페이스의 정의, 사용 이유, 구현(코딩)

    정의: 추상 메소드의 집합으로, 구현이 없이 선언만 되어 있으면 필드는 상수만 가질수있다.
    사용이유: 다중상속을 구현하기위해서

  3. 디폴트 메소드와 정적 메소드란?

    디폴트 메소드는 인터페이스에서 구현을 가지는 메소드로, 기존의 인터페이스를 확장하고 있는 클래스들에게 새로운 메소드를 추가하기 위한 기능이다.
    정적 메소드는 인터페이스에 바로 속하는 메소드로, 인터페이스의 인스턴스 생성 없이 인터페이스의 이름으로 호출할 수 있습니다

  4. 중첩클래스: 2개의 클래스를 몇가지 중첩클래스로 전환하기
    41.정적중첩클래스
    2.비정적 중첩클래스(1.내부클래스 2.지역클래스 3. 익명클래스)
    내부 클래스 (멤버클래스)				클래스안에 클래스
    public class OuterClass {
        // 멤버 클래스
        class InnerClass {
            // ...
        }
    }
    지역 클래스       메소드안에 클래스
    public class OuterClass {
        void someMethod() {
            // 지역 중첩 클래스
            class LocalInnerClass {
                // ...
            }
        }
    }
    익명 클래스		이름없는클래스(*세미콜론)
    public class OuterClass {
        // 익명 중첩 클래스
        MyInterface anonymousInnerClass = new MyInterface() {
            // ...
        };
    }

08

  1. object 클래스: getClass(), toString(),equals()와 ==의 비교

    getClass(): 객체의 클래스 정보를 반환합니다.
    toString(): 객체의 문자열 표현을 반환합니다.
    equals(): 객체의 동등 여부를 판단합니다. 보통 내용을 비교하기 위해 오버라이딩됩니다.
    == 연산자: 두 객체의 참조 값을 비교합니다. 객체가 동일한지 여부를 판단합니다.
    ---------------------------------------------------------*
    ==은 객체의 참조값을 비교하지만 equals()은 객체의 동등여부를 판단한다

  1. String 클래스: 객체 생성 2가지 방법, 문자열 비교하기
방법 1: 문자열 리터럴 사용
String str1 = "Hello";  // 문자열 리터럴을 사용하여 객체 생성
방법 2: new 키워드를 이용한 생성
java
String str2 = new String("Hello");  // new 키워드를 사용하여 객체 생성
equals() 메소드는 Object 클래스에서 상속받은 메소드를 String 클래스에서 재정의하여 두 문자열의 내용을 비교합니다.
String str1 = "Hello";
String str2 = new String("Hello");
boolean isEqual = str1.equals(str2);  // true (내용 비교)
  1. 예외: 분류, try ~ catch 블록 사용하기 throw와 try ~ catch의 차이
    try {
    예외가 발생할 수 있는 코드
    } catch (예외클래스 변수) {
    예외를 처리하는 코드
    }
    }finally {
    여기있는 코드는 try블록이 끝나면 무조건 실행된다
    }

throw는 예외를 발생시키는 데 사용되고 예외를 직접 생성하거나 발생시킬 때 쓰입니다. 반면에 try-catch는 예외를 처리하기 위한 블록으로, 예외가 발생하면 해당 예외를 잡아서 처리할 때 사용됩니다

profile
시즌 2의 공부기록 - Artificial Intelligence & AeroSpace

0개의 댓글