[1주차] 2023-06-02

Last updated - 2023년 06월 02일 Edit Source


    # 💻 1주차 DAY 02

    1주차 DAY 01인 06월 01일(목)에는 슬랙과 노션에 초대되었고, 간단한 OT를 진행하며 앞으로 데브코스 과정의 방향성에 대해 자세하게 알게 되었고, 2주간 진행될 Pre팀의 팀원들과 간단하게 인사하며 하루를 마무리 했었다. 오늘부터 본격적으로 프레임워크를 위한 JAVA 학습이 시작되었다. 기본적인 개념은 알고 있다는 전제하에 조금 더 심화적인 부분에 관하여 수업이 진행되었다. 기존에 알고 있던 내용들을 리마인드하는 시간이었다.


    # JAVA 개발환경


    # Build Tool

    평소 Spring Boot 환경에서 자연스레 사용하던 gradle을 homebrew로 직접 설치하여 CLI 환경에서 실행해보는 실습을 진행하여 원리를 더욱 파악할 수 있게 되었다.

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    
    # homebrew 이용 gradle 설치
    brew install gradle
    
    # 프로젝트 폴더로 이동하여 gradle 프로젝트 생성
    # application -> Java -> Groovy -> JUnit Jupyter
    # JUnit Jupyter가 JUnit5를 의미하는 것
    # 패키지는 com.programmers.java
    gradle init
    
    # 프로젝트 빌드
    gradle build
    
    # 프로젝트 실행
    gradle run
    
    # tasks 확인
    gradle tasks
    
    • build script로 코틀린도 많이 사용하는 추세이지만, 아직까지는 익숙한 groovy로 진행하기로 했음
    • gradle이 수행되는 명령 단위를 task라고 한다.
    • build.gradle에 task가 기록되어 있는데, runbuild같이 자주 사용되는 task는 Java application에서 사용할 것을 미리 만들어놔서 application 플러그인에 Java 프로그램을 실행시키기 위한 task가 들어가있다.

    # IDE (IntelliJ)

    Build Tool을 사용하여 일일히 프로젝트를 생성하고 빌드하고 extension을 설치해서 task 확인하고 실행하는건 너무 불편하다는 사실을 모르고 당연하게 쓰던 IDE… 소중함을 알게 되었다.


    # Java 심화

    1. Java는 기본형 타입인 boolean, byte, int, short, long, float, double, char를 제외한 모든 것이 참조 값(Reference value) 이다.

      • 추가로, call by value와 call by reference에 대해서 언급해주셨는데, 기존에 알고 있던 바로는 Java에서 call by reference는 없다고 알고 있었다.
      • 관련 내용은 Call by value와 Call by reference를 참고
    2. String Constant Pool에 관한 이야기

    3. String, StringBuilder, StringBuffer

      • String : 문자열 연산 자체가 적고 멀티스레드의 경우
      • StringBuffer : 문자열 연산이 많고 멀티스레드의 경우
      • StringBuilder : 문자열 연산이 많고 단일스레드고 동기화를 고려하지 않아도 되는 경우

    보통 Java-Spring에서는 멀티스레드 환경을 지원하고 있기 때문에 보통은 String, StringBuffer를 사용하는 편이다.


    1. Object 객체
      • toString()
      • equals()
      • hashCode()
      • 반드시 메서드 오버라이딩하여 사용하자. 자주 쓴다.

    동일성(Identity) vs 동등성(equality)

    • 동일성은 '==' 사용 시 참조하는 객체가 동일한지, 같은 객체를 가르키는지 확인하는 것
    • 동등성은 객체가 같은 정보를 가지고 있는지 확인하는 것

    hashCode()eqauls() 관계 : 찹쌀떡

    • hash 값을 사용하는 컬렉션에서 논리적으로 같은지 비교
    • hash(true) → equals(false) 다른 객체
    • hash(true) → equals(true) 동등 객체

    Comment