20210218 - TIL

Starve·2021년 2월 18일
0

TIL

목록 보기
35/38
post-thumbnail

TIL

  • Enum

    • 관련된 상수들을 묶어둔 것.

    • type - safe
      같은 타입끼리만 오퍼레이션이 정의된다. (같은 타입끼리 연산 가능)
      같은 타입이 아닐 경우, 오퍼레이션 메서드 실행 시 컴파일 에러가 나타난다.

    • 불연속적이고, 값이 제한되는 것을 묶을 수 있다. (ex: 국가 코드, 화폐 단위 등)

    • Enum 생성 시, 입력은 대문자로 하는 것이 기본적이며, 문자 사이엔 언더바(_)를 사용한다.

    • Enum끼리 비교시, == 혹은 compareTo()를 사용할 수 있다.

      compareTo(value):
      true, false 값이 아닌, 정수를 반환한다.

      • 값과 비교 값이 같은 경우: 0
      • 값이 비교 값보다 클 경우: 1
      • 값이 비교 값보다 작을 경우: 비교값과의 차를 반환.
    • 클래스에 종속적일 때 보통 내부에 선언하지만, 선언 시 지저분해진다는 단점이 있다.
      그럼에도 내부에 선언하는 이유는, 종속관계를 명확하게 표현이 가능하기 때문이다.

    • enum의 생성자를 작성하지 않을 경우, 기본 private이다.
      enum의 변수는 final로 지정하자.

    • 객체 지향적으로, 유니크한 식자가 없다. (보통은 해시코드(주소값)로 식별 가능.)
      객체를 식별하는 것이 무의미 하기 때문인데, 그 이유는 그냥 값이기 때문이다.

  • StringBuffer / StringBuilder 중 뭘 쓰는게 나을까?
    답은 그때그때 다르다!
    평소에는 둘 중 thread safe를 하지 않는 StringBuilder를 사용하는 것이 좋다.
    StringBuffer는 thread safe를 하기 때문에, 멀티 쓰레드 환경에서 안전하다.
  • 포인터: 객체의 주소값을 이용해 값을 제어할 수 있다.

    함수 내부에서 외부 변수의 값을 변경하는 데 보통 사용됨. (Call by address)

    포인터를 쓰며, 값 자체를 변경할 수 있게 되었으나, pure function이 아니기 때문에 지양하는 중이다.

자바 내에서는 이러한 포인터가 없으며, 참조 타입과 primitive 타입으로 나뉘는데, 둘 다 pass by value로 동작한다.
다만 Primitive 타입은 call by value,
참조 타입은 call by reference 처럼 동작.

  • List<Object> list = ArrayList<>(); 와 같이 선언하는 장점이 메소드와 다형성 때문이라고 하던데 혹시 다른 이유도 있나요?

    업캐스팅의 효용성!

    대부분 어레이 리스트가 필요한게 아님.

    그냥 리스트를 쓰고싶을 뿐임..

    근데 다른 리스트를 쓰고싶을 때 편리하게 변경이 가능하기 때문에

    그냥 리스트에 담고 하는거임!

    List에 일단 담고 ArrayLIst쓰고 싶으면 그 부분만 다운캐스팅하면 된다

Todo

  • 자바의 정석 람다식 최소 10챕터 까지 완독
    • 정리까지가 목표였는데 목표치를 하지 못했다.
  • 마스터 클래스 수강 후 , 정리
  • 미션 4 진행하기
  • 근력운동
  • 알고리즘 풀기

느낀점

  • 시간이 너무 빠르다... 주말 내에는 자바의 정석을 모두! 읽어보는 것으로 마음 먹었는데, 영 시간이 부족하다고 느낀다.. 시간을 어떻게 하면 더 알차게 보낼 수 있을까?? 잠을 줄여야하나 고민이다

CheckList

  • 미션 4 완성 후 제출
  • 자바의 정석 람다식 부분 정리
  • 알고리즘 풀기
  • 근력운동
profile
노력

0개의 댓글