20200920-TIL

나영원·2020년 9월 20일
0

T.I.L.

목록 보기
36/145
post-custom-banner

오늘 공부할 내용

  • 내부클래스, 상수풀, 클래스 생성시기 리서치
  • 알고리즘 한무
  • 알고리즘 한문제풀기
  • 질문사항 정리 및 해결
  • TiL 정리 및 블로그 업데이트

오늘 배운 내용

  • 내부클래스 복습 및 확장

    • 익명의 내부클래스의 포인트는 new키워드로 객체를 생성하고 바로옆에 중괄호를 열어 바로 클래스를 구현하는 것이었다. 그리고 구현이 끝났다는 의미로 괄호를닫고 세미 콜론을 사용한다
      • new Runnable(){}; , new IFoo() {};
    • Map.Entry가 인터페이스인데 내부클래스가 될 수 있었던것이 익명내부클래스를 사용해서 그런것인가??
    • 내부클래스를 멤버 클래스와 지역 클래스로 나누어 멤버 클래스는 멤버 변수와 성격이 비슷하고 지녁 클래스는 지역변수와 성격이 비슷하다고 설명했는데 간단히 이해하고 정의하기 좋은 예인거같다
    • 내부클래스의 생성 시점이 알고 싶어 static initilizer를 사용하고 싶었으나 static 내부메서드 외에는 모두 사용할 수 없어 언제 생성되는지도 잘모르겠다.. 메모리적으로 어떻게 생성이되는지 궁금했는데 아쉽다
      • static 내부 클래스는 외부클래스와는 독립적으로 생성되는 클래스로 static 메서드를 사용시 외부클래스의 클래스가 생성되지 않고도 사용이 가능하다
      • 이는 static 내부 클래스의 객체 생성과 멤버 메서드 사용에서도 같은 방식으로 사용된다 => 그래서 외부클래스의 접근시 객체를 생성해야되나보다..
    • 내부클래스에 관한건 이정도로해서 마무리 해야 될 것같다.. 더 자세히 메모리나 생명주기에 대해 이야기 하는 자료가 없다
  • 람다식 예습

    • 함수형 프로그램은 클래스를 생성하지 않고 입력받은 매개변수외에 다른 외부 변수를 사용하지 않아서 외부에 다른 영향을 주지 않는다

    • 자바에서 이러한 함수형 프로그램의 구현을 위해 Java8부터 람다식을 제공함

      • 내부적으로는 내부클래스를 생성하여 구현하지만 그부분은 바같으로 보이지 않고 구현부분이 심플하게 제공됨
    • 람다식 문법

      • 매개변수가 하나인 경우 괄호 생략가능하다( 두개이상은 생략할 수 없다)
      • 중괄호 안의 구현부가 한 문장인 경우 중괄호 생략 가능하다
        • 하지만 그 한문장이 retun문이라면 생략할 수 없다
      • 중괄호 안의 구현부가 한문장이면서 retun문이면 retun과 중괄호 모두 생략할 수 있다
      • @FunctionalInterface 을 통해 interface에 어노테이션을 달 수 있고 그때는 메서드가 하나만 선언할 수 있게 되어 람다식에 사용하기에 알맞은 형태로 세팅이 된다
      • 람다는 컴파일시 따로 내부클래스 파일이 생성되지 않는다.
    • 람다식은 변수처럼 사용될 수 있다

      • 변수처럼 Arguments에 들어가기도 하고 , 다른변수에 대입되기도 한다
        • 나는 오히려 그냥 객체 라고 생각했는데 변수라고 생각해도 비슷한 것 같다
  • CodeUP 기초 100제

    • 너무 이론 공부에 치중하는 느낌이 들어서 자바 연습문제가 없을까 찾다가 코드업에서 기초100문제가 있어서 쭉 풀어보면서 복습 해보기로 하였다
  • Java 개발자 로드맵

    • 인프런 강좌 검색중 무료로 java개발자 로드맵에대해서 알려주는 강좌가 있어서 나눠서라도 하나씩 들어보고 로드맵을 그려보고자 한다

오늘 느낀 점

  • 공간이 편해서 그런가 요즘 공부시간이 많이 흐트러진 기분인데 공부하기 위해 시간을 할애하고 세팅 해놨으면 그만큼은 집중을 해서 공부를 해야되는 것같다. 공부할 거리가 없다, 공간이 좀 프리하다 등 여러가지 환경이 부족한 부분은 있지만 또 그부족한 것을 채우는게 나의 역량인것 같다.. 어떻게하면 공부시간을 집중해서 활용할지 진지하게 고민을 해야겠다
    • 한가지는 자바에 관해 혹은 프로그래밍에 관해 전반적인 지식 향상을 위해 주제별로 스스로 탐색해보는 시간을 갖거나 아니면 온라인 강의를 찾아서 듣는 것도 방법인것같다. 그 첫번째 주제로 떠올린것이 객체지향이 었다. 아직 객체지향이 무엇인지 뿌옇기만한데 공부할수록 도움이 될 것 같다
    • 뽀모도로 타이머를 하면서 공부에만 집중하기위해서 하는 것 인데 자꾸 이것 저것 핑계를 대면서 그시간에 다른짓을 한다.. 타이머 시간에는 오직 공부에만 집중할 수 있도록 하고 다른 시간이 더필요하다고 느낀다면 차라리 타이머를 누루지말고 휴식시간을 길게 가져가자
      • 중요한건 몇시간을 공부하러 와서 앉아있엇냐가 아니라 실제로 얼마나 공부를 했냐이기 때문에 뽀모도로 타임을 기록하면서 하루하루 평가해나가는 것도 좋은 방법인 것 같다
    • 조금 더 긴장감 있게 공부 하기위해서 점심시간 12시반~ 1시반을 지켜서 움직여 보려고 하였다
  • 오늘 내부클래스 관한 내용 공부하면서 내가 너무 프로그래밍을 시험 공부하듯이 공부하고 있나 라는 의문이 들었다
    • 중요한건 내가 어떻게 프로그래밍을 잘할 것인가에 포커스가 맞춰져야 하는데 너무 원리적인 부분들만 고민하고 있는게 아닌 가 싶기도하다.
      • 강사님이 메모리 구조에서 중요한건 라이프 사이클이 어떻게 되는지를 생각해보라고 했는데 나는 너무 깊게 생각하고 있는 걸수도 있다

내일 공부할 내용

  • CodeUP 기초 100제
  • Java 개발자 로드맵
  • 브런치 & 개발자 글 더보기
  • 질문사항 정리 및 해결
  • TiL 정리 및 블로그 업데이트
profile
배우는 개발 일기
post-custom-banner

0개의 댓글