JAVA 공부 22.10.30

Kim yohan·2022년 11월 3일
0

TIL

목록 보기
2/16
  1. 뭐 먼저 공부하지?

    1. <난 정말 JAVA 공부한 적이 없어요>
      기본 문법 + java 공부하는데 도움될듯
    2. 인프런 코드스쿼드
      oop+test code 작성하는 법 배울 수 있을듯.
      파트 3 캘린더 만들기만 보자
    3. 인프런 자바스프링
  2. int a = 25.1 → 에러남. 자동형변환 안됨.
    → 책에서는 된다고 되어있는데 버전 바뀌면서 안되는 \가?

  3. 반복문 안에서 continue는 조건문으로 가주는 역할

  4. static(정적)
    필드(변수)나 메소드에 static을 쓰게 되면 heap 영역에 저장되지 않고, static 영역에 저장된다.
    프로그램 종료까지 할당이 풀리지 않아 모든 객체가 공유하여 참조할 수 있지만, 남발하면 성능에 악영향 줌.

    1. static field
    → 여러 곳에서 해당 필드 값이 공유됨.
    2. static method
    → instance 생성안해도 해당 메소드 사용 가능.
    → Name.print1() ↔ Name name1 = new Name(); name1.print2()
  5. instanciation : instance 생성하는 행위

  6. 객체 생성과 참조 변수
    FruitSeller john = new FruitSeller();
    new 부분은 객체를 생성
    john은 참조변수로 해당 객체의 주소값을 저장.
    따라서, kim = john처럼 kim이 해당 객체를 가르키도록 할 수 있다.
    → 참조변수를 매개변수로 사용하는 경우에
    객체가 복사되는 것이 아닌
    주소값만 전달되는 것!

  7. class에 public 붙이는이유 & 한 파일에 public 여러개면 에러나는 이유
    → class는 하나(or not)의 public class, 그리고 여러개의 class로 이루어짐. 이유는 대표되는 class의 이름을 파일명과 같게 하여 가독성을 늘리기 위함.
    → 어느 class가 어떤 파일에 있는지 쉽게 찾기 위함.
    대신, public 없으면 다른 곳에서 사용 못함.

  8. 인스턴스와 객체
    → 인스턴스는 클래스를 기반으로 생성된 객체를 말함.
    객체는 사물이나 대상을 프로그램상에서 표현한 것.
    결국 JAVA에선 인스턴스와 객체가 동일시 되지만,
    표현법의 관점에서
    클래스가 틀로 사용되는 것을 강조할 때 인스턴스를 사용하고,
    아니면 객체를 사용하면 될 듯.
    ex) 인스턴스 필드(변수), 인스턴스 메소드

  9. 생성자

    →조건 :

    생성자 이름과 클래스 이름 같아야함.
    반환형 없어야 하고, return 없음

  10. 패키지
    모든 class는 반드시 특정 패키지에 포함되어야 한다!
    → 이유는 패키지 선언을 하지 않은 클래스들 사이의 패키지 접근권한을 나누기 위해

패키지를 선언하지 않은 클래스들은 그들끼리 “이름 없는 패키지”로 묶인다.
11. 접근 제어자
public > protected > default > private
1. public
어디서든 접근 가능
2. protected
동일한 패키지 & 파생 클래스에서 접근 가능
3. default : 아무것도 안 정해주었을 때
동일한 패키지 내에서만 접근 가능
4. private
해당 클래스에서만 접근 가능

  1. Access 메소드
    private인 변수 값을 수정하고, 접근하기 위한 메소드.
    해당 변수가 선언된 클래스 내에 있어야함.
    → private age;
    public void setAge(int age) {this.age = age;}
    public int getAge(return age);

  2. 클래스, 생성자 접근제어자
    생성자 접근제어자는 public으로 많이 한다.
    보통 클래스 보다 생성자 접근제어자를 널널히 설정할 거 같음.

  3. private 생성자 사용 용도
    쓸모 없을 것 같아지만 찾아보니 사용되는 용도가 있다!
    https://codechacha.com/ko/java-private-constructor/
    1. 불필요한 객체 생성 제한
    함수를 모두 static으로 설정해서 객체 생성 없이 함수만 사용하려는 경우에 객체 생성을 제한하기 위해 private 생성자 사용.
    2. Singleton 패턴 (디자인 패턴 중 하나)
    프로세스 내에서 객체를 하나만 생성하려는 경우.
    생성자를 private로 하고,
    인스턴스 생성은 static으로 하고,
    getInstance()함수를 public으로 만들어 객체를 제공한다.
    3. 인자 제한, 생성 위임
    기존 생성자를 private로 걸고,
    새로운 생성자를 public으로 걸어서
    원하는 자료형을 인자로 받고 싶을 때 사용
    4. Builder 패턴
    현 class의 생성자를 private로 걸고,
    하위 class인 Builder의 생성자로 대신 객체를 생성.
    ex) Employee.Builder builder = new Employee.Builder();

profile
꾸준히 성실하게

0개의 댓글