본문 바로가기

JAVA/온라인 스터디

2주차 라이브 방송 정리

백기선님 방송 주소: www.youtube.com/user/whiteship2000

매주 토요일 오후 10시 30분 (한국 시간 기준)

 

2020.11.21 10:30

 

<JAVA 뉴스> 

1. Maven 의존성 관리 문제 풀이

- 메이븐(maven)이 디펜더시를 가져오는 규칙은 가장 구체적으로 가까이 정해져있는 것을 가져온다. Guava

- dependencyManagement 27.0 / Dependency Truth 27.0.1 중 어떤 버전의 Guava를 가져올까? 

27.0이 맞습니다! 

- dependencyManagement 27.0 / Dependency 정의한 Guava 28.2 / Dependency에 정의한 Truth 27.0.1 어떤 버전의 Guava를 가져올까?

Management 도 Dependency보다 멀다. 버전을 명시적으로 정의하면, 정의한 버전을 쓴다. 

- Maven 공부법: apache maven project 그냥 정독하세요

 

2. Spring 주간 뉴스

- inteliJ를 코딩을 같이 할 수 있는 기능이 생겼다! (하지만..코딩은 혼자 하는걸루..ㅎㅎ)

 

<JAVA 스터디>

1주차 (추천글)

1. 바이트 코드 operation

https://gintrie.tistory.com/61

컴파일 한 뒤의 과정을 실습해봤으면 하는 내용이 잘 담겨 있다. 

 

2. 공부의 목적!

github.com/kyu9/WS_Study/blob/master/week1/day1.md

공부는 각자 편한 방식으로 하자! 

 

2주차 주제 의도

1. 변수 선언과 관련해서 - 바이트 코드와 연결지어 공부하면 좋다. 

int a = 5

int a = helloNumber()

한 줄이지만, 클래스 파일에서는 한 줄이 아니다. 

 

2주차 공지사항

2020년 11월 22일 오후 10시까지 마감! (앞으로 스터디는 1주일 단위)

- 스터디 리뷰의 퀄리티를 위하여!

- 공부는 스스로를 위한 것! 성의 있게 합시다! (상세하게 언급하자)

- 다른 사람들의 참고 자료를 보는것도 도움이 된다.

 

앞으로 스터디 제출 기한은 매주 토요일 오후 3시까지 (한국 시간 기준)

 

2주차 (추천글)

1. 프리미티브 타입의 표현 범위 과정 이유 상세 기술

blog.naver.com/hsm622/222144931396

primitve type: 기본값의 표현 범위가 왜 그런거지 과정을 상세하게 기술

unsigned 언급: java에서는 있다고 하기도 애매하고, 없다고 하기도 애매하다. 

 

(추가 설명)

unsigned는 부호(+/-)를 표시할 비트가 필요없다. 그렇기 때문에 표현할 수 있는 범위가 증가한다. 

java 8 이전은 unsigned가 없다. java 8에 새로 생긴 기능

int unsigned = 210000000;
System.out.println(unsigned + 10000000);
// overflow가 된다. 

 

2. unsigned int 언급 + 전반적으로 정의가 잘되어 있음

www.notion.so/2-38b5d67c7f5a48238529bb8f1617ea0d

unsigned int를 사용할 수 있는 방법이 java 8부터 쓸 수 있는 방법이 생김. 

int unsigned = Integer.parseUnsignedInt("220000000");
System.out.println(Integer.toUnsignedString(unsigned));    //unsigned integer로 취급하겠다. 

BigIntger bigInteger = BigInteger.valueOf(22000000L);  // 그냥 Big을 씁시다. 

 

3. 리터럴의 정의를 한줄로 끝내지않고, 숫자 형식까지 기술하기

int number = 1_000;   // 실행결과 1000으로 나온다. 

 

4. 타입 추론, var의 의도 : var의 변수만 언급한 것. 

 

5. 메모리의 영역을 나눠서 정리한 점 (변수의 선언과 관련하여) + 실수리터럴 double 1E-1;

velog.io/@jaden_94/2%EC%A3%BC%EC%B0%A8-%ED%95%AD%ED%95%B4%EC%9D%BC%EC%A7%80

꼼꼼한 정리

 

6. 

github.com/kksb0831/Practice_project/blob/master/Java_Study_02.md

부동소수, 가수 관련 설명 

부동소수점은 표현방법은 넓어서 좋다. 

float number = 0.1f;
  for (int i = 0 ; i <10 ; i++) {
       number += 0.1f;
  }

부동소수점은 정확하게 표현을 할 수 없다. 문제가 있다. 정확한 계산을 못할 수 있다. float / double을 사용해선 안된다. 돈계산의 경우 BigDecimal을 활용해야한다. 

BigDecimal number = BigDecimal.ZERO;
    for {int i = 0 ; i < 10 ; i++} {
        number = number.add(BidDecimal.valueOf(0.1));
    }
System.out.println(number);

6. 변순의 선언 - 바이트 코드

public class Hello {
     public static void main(String[] args){
         int a = 10;
         System.out.println(a);
     }
}

출처: https://youtu.be/xoHDRclHojM

코드를 한 줄로 적었지만, 사실상 두 줄이다.  

> 사실 이부분 이해안감 ㅠ 왜 설명하신거지..

 

7. 변수의 초기화

catsbi.oopy.io/6541026f-1e19-4117-8fef-aea145e4fc1b

변수 초기화 과정을 표현한 방법 

변수의 스코프와 라이프타임: 클래스 변수 - 생성 시기 언급 

static 메소드에서 인스턴스를 참조할 수 없다. 

그 이유는 static의 올라온 시점과 연관되어 있다. new를 한 다음에 가능하다. (?: 로딩 시점이 달라 참조가 안된다 하신다...ㅎ....모르겠다...)

스터디 의도: 인스턴스 변수와 클래스 변수의 생성시기 차이로 인해 컴파일 에러가 나는 이유

static 클래스를 로딩할 때, static variable이 메모리 영역에 들어온다. 

(여전히 헷갈린다...)

 

8. 친절한 그림

www.notion.so/2-00ffb2aeb41d450aa446675b8a9e91d5

타입 추론 정리를 제일 잘함.

기본형 타입에서 int에 대한 언급 

 

9. 자바의 유니코드 지원 언급 + 배열 정리 정리가 좋음 ( 다차원 배열에 대한 언급 - 2차원적으로 설명)

b-programmer.tistory.com/225

한자도 입력 가능, 모든 언어 입력 가능! JAVA의 특징

 

10. 리터럴 언급

github.com/yeo311/java-study-with-whiteship/tree/main/week2

리터럴 정리가 좋았다. 변수명 사용 규칙(아 이거 언급하려고 생각해두었다가, 까먹음;)

 

11. 까먹으셨다..

blog.naver.com/swoh1227/222149491648

유니코드 언급, 정리 잘함

 

12. 정리가 꼼꼼하다

docs.google.com/presentation/d/1Ni0FMbVBSTxiOWHvp928quGT8sTjTG_ZuAWxaCFGT1E/edit

추천! 꼭 보세요! 

 

스터디 피드백 

1. 깃허브 댓글에 코멘트 기능이 없어, 별도로 표시 예정

 

질의응답

1. 다음 시간에...ㅎ

 

후기

1. 다른 분들 스터디 자료를 보려고 했으나, 일요일 오후에 급하게 내거 준비하느라 성의가 부족했다. 

2. 매일 2시간씩 꼼꼼히 해보자.

3. 짱짱 졸리다......토요일은 조금 늦게 일어나는 걸루 (일요일 오전에 일정을 잡지 말자..ㅠ)

 

3주차 숙제: 연산자

github.com/whiteship/live-study/issues/3

앞으로 마감일이 지나면, 숙제를 업로드 못합니다.

2020년 11월 28일 오후 3시까지