ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 자바 강의 정리
    Java 2023. 7. 9. 00:05
    반응형

    ## 너무 쉬운건 제외하고 헷갈릴 만한 부분만 추림

     


    1장 - 자바 시작
    - .java 파일 (소스 코드) -> .class 파일 (바이트 코드) - 컴파일 방식
    - .class 파일 -> JVM 적재 - 인터프리터 방식
    - JVM은 필요할 때 클래스 파일 로딩 -> 링크 과정이 없음
    - JDK (Java Development Kit) : 개발에 필요한 자바 도구 모음
    - JRE (Java Runtime Environment) : 자바 실행에 필요한 API 포함
    - Java SE : 표준 배포판 - 데스크탑, 서버 응용 개발 플랫폼
    - Java ME : 마이크로 배포판 - SE + 임베디드 개발에 필요한 API
    - Java EE : 기업용 배포판 - SE + 인터넷 기반 서버사이드 컴퓨팅 API 추가

     


    2장 - 기본

     


    3장 - 루프와 예외처리
    - 정방형 배열 : 각 행의 열 개수가 같은 배열
    - 비정방형 배열 : 각 행의 열 개수가 다른 배열 -> 각각마다의 초기화를 따로 해줘야함

     


    4장 - 클래스와 객체
    - 다형성
    - 메소드 오버로딩 : 메소드 명은 같지만 매개변수가 다름 (프로토타입이 다름)
    - 메소드 오버라이딩 : 부모 클래스의 메소드를 재정의 - 프로토타입이 같음
    - public class 는 파일마다 하나만 가능
    - 기본 생성자 : 클래스에 생성자가 하나도 없을때 컴파일러에 의해 자동으로 만들어짐 -> 아무 작업 X
    - 클래스에 생성자 하나라도 있으면 기본 생성자 생성 안함
    - this : 객체 자신에 대한 레퍼런스, this() : 클래스 내의 다른 생성자 호출 - 생성자 내에서만 호출 가능
    - 객체의 치환
    Circle obj1 = new Circle();
    Circle obj2 = new Circle();
    Circle s = obj2;
    obj1 = obj2
    에서 obj1 에는 obj2의 값이 복사되는 것이 아닌 레퍼런스가 복사됨 -> s와 obj1은 같은 객체를 가리킴
    - 메소드 접근 지정자
    - public : 모든 클래스에 허용
    - private : 완벽 차단
    - protected : 동일 패키지, 자식 클래스에 허용(다른 패키지에 있어도 허용)
    - 디폴트(아무것도 입력 안한것) : 동일 패키지에 허용
    - 인자 전달
    - call by value : 기본 타입 전달 - 값이 복사되어 전달 - 호출한 실인자 값이 변경되지 않음
    - call by reference : 레퍼런스 타입 전달 - 레퍼런스만 전달 - 호출한 실인자 값이 변경됨
    - java 에서는 배열도 레퍼런스로 간주
    - 가비지 : 가리키는 레퍼런스가 하나도 없는 객체
    - 가비지 컬렉션 : JVM(가비지 컬렉션 스레드)이 자동으로 가비지 수집
    - static 멤버 : 클래스당 하나, 객체를 생성하지 않아도 사용 가능
    - final
    - 클래스 : 상속 불가
    - 메소드 : 오버라이딩 불가
    - 필드 : 변경 불가

     


    5장 - 상속
    - 자바에서는 클래스의 다중 상속 불가능
    - 모든 클래스는 자동으로 java.lang.Object 상속받음
    - 궁금증
    class MyClass extends ParentClass {}
    라는 클래스가 있다고 가정할 때 어떻게 Object 상속? 자바에서는 다중 상속 불가능
    ans) ParentClass가 Object 상속받기 때문에 자동으로 MyClass 도 Object 상속받은것

     

    - 슈퍼/서브 클래스의 생성자호출 및 실행
    1. 서브 클래스 객체 생성시 어떤 생성자 호출?
    ans) 둘다 실행 - 슈퍼 클래스 생성자 실행 후 서브 클래스 생성자 실행
    2. 누가 먼저?
    ans) 호출은 서브 클래스 -> 슈퍼 클래스 but 실행은 슈퍼 클래스 -> 서브 클래스
    - super() : 슈퍼 클래스의 생성자 호출하는 방법 - 매개변수의 형태로 부모 클래스 생성자 중 선택
    - 업캐스팅 : 서브 클래스 객체를 슈퍼 클래스 타입으로 형변환 - 자동으로 가능
    - 업캐스팅된 레퍼런스 - 슈퍼 클래스 멤버만 접근 가능
    - 다운캐스팅 - 슈퍼 클래스 객체를 서브 클래스 타입으로 형변환 - 명시적으로 해야함
    - 객체레퍼런스 instanceof 클래스타입 -> 레퍼런스가 가리키는 객체의 타입 식별
    - 메소드 오버라이딩
    - 슈퍼 클래스 메소드를 서브 클래스에서 재정의
    - 동적 바인딩 : 서브 클래스에서 오버라이딩된 메소드가 무조건 실행됨
    - Shape shape (부모) = new Line() (자식); shape.draw() 호출 시 line.draw() 실행됨
    - super.멤버 - 정적 바인딩 : 부모의 멤버를 접근할 때 사용

    - 추상 메소드
    - 선언만 되고 구현 X 된 메소드 - abstract
    - 서브 클래스에서 오버라이딩으로 구현해야함
    - 추상 클래스
    - 추상 메소드를 하나라도 가진 클래스
    - 추상 메소드가 하나도 없지만 abstract로 선언된 클래스
    - 추상 클래스는 객체 생성 불가능
    - 용도 : 설계와 구현 분리

    - 인터페이스
    - 필드 : 자동으로 public static final 삽입됨
    - 메소드 : 자동으로 public abstract 삽입됨
    - 디폴트 메소드 (default 메소드명) : 기본적인 동작 구현 가능
    - 인터페이스는 다중 상속 가능
    - 용도 : 규격화, 스펙 - 클래스들이 기능을 서로 다르게 구현하도록

    - 추상 클래스, 인터페이스 모두 다형성 실현


    6장 - 패키지
    - Object 클래스
    - 모든 클래스의 수퍼 클래스
    - hashCode(), toString(), equals() 등이 있음
    - == 연산자 : 두 개의 레퍼런스 비교 - 가리키는 객체가 같은지 비교
    - equals() : 객체의 내용이 서로 같은지 비교 - 직접 구현해야함
    - Wrapper 클래스
    - Integer, Long, Float, Double 등 기존 기본 타입을 클래스로 wrap 해놓은것
    - 박싱(boxing) - 기본 타입 -> Wrapper 객체
    - 언박싱(unboxing) - Wrapper 객체 -> 기본 타입
    - JDK1.5 부터 자동으로 가능
    - String 객체
    - 힙 메모리에 String 객체 생성
    - 수정 불가능 -> String 객체 내의 메소드들은 새로운 String 객체를 내부적으로 리턴
    - StringBuffer 클래스
    - String과 달리 문자열 변경 가능 - 메소드들이 매개변수로 온 문자열 자체를 바꿈
    - 이 때 매개변수로 StringBuffer 가 오는 경우가 많음


    7장 - 제네릭과 컬렉션
    Collection<E>
    - Set<E>
    - HashSet<E> : 구현
    - List<E>
    - ArrayList<E> : 구현
    - Vector<E> : 구현
    - Stack<E> : 구현
    - LinkedList<E> : 구현
    - Queue<E>
    - LinkedList<E> : 구현
    Map<K, V>
    - HashMap<K, V> : 구현
    - 제네릭
    - 여러 종류의 타입으로 가능
    - 자바에서 컴파일 타임에 E, K, V 와 같은 부분을 Object 타입으로 바꿔놓음
    - 원래는 기본 타입으로 선언 불가능하지만 JDK 1.5부터 자동 박싱으로 가능
    - 제네릭 클래스, 인터페이스의 배열 불가능
    - 제네릭 타입의 배열도 안됨 but 매개변수로써는 가능


    8장 - 스트림
    - 버퍼를 가지고 응용프로그램과 입출력 장치를 연결
    - 단방향 -> 입력과 출력 동시에 할수없음
    - 바이트 스트림, 문자 스트림 존재

    반응형

    'Java' 카테고리의 다른 글

    자바 string 비교  (0) 2021.09.16
Designed by Tistory.