스터디/혼공학습단

[혼공학습단] 혼공자 9기 1주차

Jop 2023. 1. 4. 16:21
반응형

안녕하세요 ㅎㅎ 이번에 혼공자 9기 신청해 혼공학습단 멤버로 선정되었습니다.

사실 저번에 8기를 신청해 선정되어 3주 차까지 열심히 도전해 보았지만... 추석연휴로 인한 장기휴식으로 인해 

회사 업무 및 개인 업무가 밀려서 완주를 못한게 아쉬워서 다시 도전하게 되었습니다!

이번에도 설연휴가 있긴하지만 다시 신청한 만큼 이번엔 꼭 완주해 보겠습니다 👊

 

혼자 공부하는 자바  커리큘럼

혼공자 커리큘럼

https://hongong.hanbit.co.kr/%ED%98%BC%EA%B3%B5-%EA%B2%8C%EC%8B%9C%ED%8C%90/?uid=76&mod=document&pageid=1&mibextid=Zxz2cZ

 

 

[혼공학습단 9기] 도서별 커리큘럼(동영상 강의 및 Q&A 링크 안내)

안녕하세요, 한빛미디어 혼공학습단의 🧙‍♀️혼공족장🧙‍♀️입니다. 혼공학습단 9기의 도서별 커리큘럼 안내드립니다.   1. 혼공학습단 9기 활동 방법(3단계) 1️⃣도서별 커리큘럼에 따

hongong.hanbit.co.kr

도서별 커리큘럼을 보고싶으신 분들을 위해서 위에 링크를 첨부하였습니다. 혼공학습단 관심 있는데 자바 말고 다른 언어를 계획하신 분들은 

다른 언어들도 있으니 확인해보세요 👍

 

JDK 설치 화면 인증하기 (기본 미션)

 

 

학습 스케쥴 직접 짜고 공유하기 (선택 미션)

  • 1월

  • 2월

저는 지난번 기수 때 오히려 연휴기간에 쉬었던 게 문제점이어서 6주 동안 강하게 간다는 느낌으로 연휴기간에는 복습을 할 예정입니다!

주말에는 개인사정으로 인해 공부를 못하는 경우가 있으니 최대한 평일에 끝내고 주말에는 복습 위주로 갈 예정이라 주말은 비워뒀습니다. 추가로 이번에는 챕터별로 몰랐던 부분이나 궁금했던 점을 정리해보겠습니다!

 

1주차 정리 Chapter01 ~ 05

Chapter 01

  • 모듈명

모듈 기술자(module-info)에서 module 키워드 다음에 있는 것이 모듈명입니다.

모듈명을 꼭 프로젝트명으로 할 필요는 없습니다. JDK11 버전 이후 부터는 명령프롬프트와 같은 명령 라인에서 프로젝트를 실행할 때 모듈명이 필요합니다.

(JDK8)이하 버전은 module-info.java를 생성하지 않아도 됩니다. 이 경우 모듈 기술자 생성시 컴파일 에러 발생

  • 의존성 모듈

JDK8 이전 버전까지는 표준 API 전체가 제공되었기 때문에 문제가 없었지만 JDK11 이후 버전부터 JDK가 제공하는 표준 API를 모듈별로 쪼개어서 제공합니다. 기본적으로는 java.base 모듈을 사용할 수 있지만, 다른 모듈에 있는 API를 사용하고 싶다면 반드시 모듈 기술자에 의존성 모듈로 등록해야 합니다.

module chap01{
	// java se가 제공하는 모든 모듈이 필요함
	requires java.se;
}

java se(SDK)가 제공하는 모든 표준 모듈이 필요하다고 했기 때문에 java se 전체에 의존성을 가집니다. 이렇게 되면 java 8처럼 표준 API 전체를 제공받는 것과 동일한 효과가 나타납니다.

 

Chapter02

컴파일 단계에서의 정수 연산

자바는 실행 성능을 향상시키기 위해서 컴파일 단계에서 연산을 수행할 수 있습니다.

예를 들어, 다음과 같이 정수 리터럴 10과 20을 덧셈 연산해서 결과를 byte 변수 result에 저장하는 코드가 있다고 가정해보겠습니다.

byte result = 10 + 20;

자바 컴파일러는 컴파일 단계에서 10 + 20을 미리 연산해서 30을 만들고, result 변수에 30을 저장하도록 바이트 코드를 생성합니다. 이 경우에는 피연산자가 변수가 아니므로 int타입으로 변환을 하지 않습니다.

 

- valueOf와 parseInt 차이

Integer.parseInt와 Integer.valueOf의 주요 차이점은 아래와 같습니다.

💡 parseInt()는 원시데이터인 int타입을 반환, valueOf()는 Integer wrapper객를 반환

return 값의 차이입니다.

 

하지만 자바 1.5에 Autoboxing and Unboxing in java가 도입된 이후에는 큰차이가 없어졌다고 합니다.

https://www.javainterviewpoint.com/difference-parseint-vs-valueof-java/

 

Difference between Integer.parseInt() vs Integer.valueOf() in Java

 

www.javainterviewpoint.com

Chapter03

  • 논리 연산자의 단축평가
int no = 5;
no < 10 || no > 9; // true

no<10의 값이 true, 어느 하나라도 true일 경우, x||y의 값은 true가 됩니다.

|| 연산자의 왼쪽 피연산자 값이 true일 경우, 오른쪽 피연산자는 평가하지 않습니다.

 

Chapter05

  • 기본타입

정수, 실수, 문자, 논리 리터럴

  • 참조타입

객체의 번지를 참조하는 타입 배열, 열거, 클래스, 인터페이스

  • 명령 라인 입력
public static void main(String[] args) {...}

명령 라인(명령 프롬프트)에서 위 코드를 java 명령어로 실행하면 JVM은 길이가 0인 String 배열을 먼저 생성하고 main() 메소드를 호출할 때 매개값으로 전달합니다.

String[] args = {}; // main() 메소드 호출 시 전달

public static void main(String[] args) {...}

만약 다음과 같이 공백으로 구분된 문자열 목록을 주고 실행하면, 문자열 목록으로 구성된 String[] 배열이 생성되고 main() 메소드를 호출할 때 매개값으로 전달 됩니다

- JDK 11 ~ : java -p . -m 모듈명/패키지.클래스 문자열0 문자열1 문자열2 … 문자열n-1

- ~ JDK 8 : java 패키지.클래스 문자열0 문자열1 문자열2 … 문자열n-1

 

main() 메소드는 String[] args 매개 변수를 통해서 명령 라인에서 입력된 데이터의 수(배열의 길이)와 입력된 데이터(배열의 항목 값)을 알 수 있게 됩니다.

  • 배열 복사

배열은 한 번 생성하면 크기를 변경할 수 없기 때문에 더 많은 저장 공간이 필요하다면 더 큰 배열을 새로 만들고 이전 배열로부터 항목 값들을 복사해야 합니다. 배열 간의 항목 값들을 복사하려면 for문을 사용하거나 System.arraycopy() 메소드를 사용합니다.

System.arraycopy(Object src,int srcPos, Object dest, int destPost, int length);

src : 원본 배열

srcPost : 원본 배열에서 복사할 항목의 시작 인덱스

dest : 새 배열

destPos : 새 배열에서 붙여넣을 시작 인덱스

length : 복사 할 개수

 

1주 차 미션 완료했습니다! 2주 차 때 돌아오겠습니다 --

 

 

반응형