내게 익숙한 툴은 vscode지만 자바는 인텔리제이가 대세라길래 인텔리제이 커뮤니티버전을 다운로드받았다
https://www.jetbrains.com/ko-kr/idea/download/?section=windows
최고의 Java 및 Kotlin IDE인 IntelliJ IDEA를 다운로드하세요
www.jetbrains.com
이후 인텔리제이를 깃허브와 연동하고, 최초 커밋 실행 및 리드미에 나한테 필요한 사항들을 좀 적어 놓음
https://github.com/fepick/fastpj
일단 강의를 다 보는 게 먼저일 것 같다, 자바로 뭘 해 본 적이 없어서 다소 막막하다
근데 볼 강의 완전 많다 강의 2배속으로 돌리면서 스킵하면서 보는데도 줄지를 않네
강의 요약
1-1 : 사용자 정의 자료형이 필요. 그걸 정의하는 도구로 Class를 사용함. Value Object. Data Transfer Object.라는 의미의 VO나 DTO를 클래스 이름 뒤쪽에 붙이면 역할을 파악하기 좋다
1-2 : 패키지는 기능이 비슷한 클래스끼리 묶어놓은 폴더 같은 거임. pj.java.day1 이런 식으로 세분화해서 패키지를 만들면 좋음
클래스란 객체지향 측면에서 객체의 상태정보(변수)와 행위정보(메서드) 를 뽑아서 설계하는 도구임
클래스 구조를 설명할 때 변수와 메서드들은 메모리에 연속적인 것처럼 그림을 그려서 설명함-->>꼭 그럴까?
1-3: 메모리에 객체를 생성하는 과정은 Person p = new Person(); 으로 new 연산자와 생성자에 의해 생성. 이 과정에 의해 인스턴스가 힙에 만들어짐.
1-4: 생성자에 대해 더 자세히 살펴보기, this.
this는 자신을 가리키는 객체변수, 참조변수, 포인터변수임.
생성자 메서드는 new연산에 의해서 호출된다. public인 경우에만 호출된다. 객체의 초기화에 필요함. 리턴타입이 없다.
객체의 멤버에 접근할 땐 '.' 연산자로 접근함
요약 :
클래스는 자료형 측면에선 새로운 자료형을 만드는 도구
객체의 2가지 정보는 상태정보와 행위정보
인스턴스는 힙에 만들어짐.
클래스 이름은 첫글자 대문자로 하고, 끝에 VO나 DTO를 붙여주면 그 역할을 파악하기 좋다
더 알아볼 부분
https://codevang.tistory.com/83
Java의 메모리 구조_기본 구조[1/3]
개발자 입장에서 프로그램이 어떻게 돌아가는지와 효율적인 메모리 관리를 어떻게 해야하는지에 대해 큰 줄기만 정리해보겠습니다. 가장 기본 언어이자 기본 구조인 C언어의 메모리 구조와
codevang.tistory.com
이사람 글들 좋은 것 같아서 쭉 읽어 보았다
이사람 글들 중에서 내가 모르는 부분 요약 :
java는 대표적 객체지향 언어. C언어 같은 언어는 절차지향 언어이지만 객체지향과 절차지향은 그저 사상의 차이일 뿐
객체지향의 대표적 특징 4가지
추상화 -> 중요한 공통의 속성이나 기능을 묶어 이름 붙이기
캡슐화 -> 내부의 동작 방법은 숨기고 사용자에겐 사용법만 노출시키기. 정보 은닉 + 사용에 용이하게 하기 -> 접근제한자
상속 -> 재사용성의 극대화 (자식은 부모의 기능이나 변수들을 그대로 가져다 쓴다)
다형성 -> 하나의 클래스나 메소드가 다양한 방식으로 동작. <부모 자식 사이> 오버라이딩과, <메소드들 사이> 오버로딩
자바 메모리 구조
소스코드 컴파일 시 JDK 내부 컴파일러가 바이트 코드로 변환 이후 class 파일을 만들어 준다
프로그램 실행 시 JRE에서 class 파일을 갖다가 구동 준비 해, 클래스 로더를 거쳐 JVM을 통해 우리에게 보여줌
그래서 좀 느리다
(JRE, JDK, JVM 이 3대 핵심 기술 패키지라고 함)
JVM의 핵심 기능은 메모리 영역을 가지고, 바이트코드를 기계어로 해석해 실행하는 것.
실행 엔진이 한줄씩 기계어로 해석해 실행하는 인터프리터 방식과, 파일 전체를 한번에 번역해 실행하는 JIT방식을 적절히 섞어서 실행한다.
메인 메소드와 같이 Static으로 지정된 메소드는 클래스 최초 호출부터 프로그램 종료 시까지 남아 있음. 이외의 코드들은 가비지 컬렉터에 의해 메모리상에서 사라짐.
C언어는 미리 모든 코드를 메모리에 올린 뒤 절차대로 수행하지만, java는 객체 중심으로, 클래스를 자주 재사용하니 필요한 코드를 필요한 시점에 메모리로 불러와 수행하고, 수행 완료 시 메모리에서 제거함. 그래서 느리다
C언어는 컴파일 시 모두 기계어로 번역 후 실행하지만, 자바는 JVM을 사용하면서 바이트코드로 번역 후 -> 인터프리터와 JIT를 섞어서 사용한다. 그래서 자바가 C언어보다 느리다. 대신 자바는 JVM이란 프로그램 안에서 프로그램이 실행되는 구조이므로, OS나 기타 환경의 영향을 C언어보다 덜 받는다.
C언어는 개발자의 명령에 따라 동적할당하고, 해제하지만 자바는 GC가 알아서 동적할당하고 해제함. 그래서 더 느리다.
자바의 8개 원시타입 변수를 제외한 모든 변수는 참조변수이다. 힙 영역에 값이 있고 그 값을 가리키기만 한다. 서로 다른 메소드 == 서로 다른 스택 프레임에서 값을 변경한다고 해도 영향을 주고받지 않음. 리턴해서 값을 바꿔라
요약
객체지향 특징 4가지 추상화 캡슐화 상속 다형성
자바의 구조. JDK, JRE, JVM
JVM의 코드 실행 과정 이해. 가상 머신 안에서 프로그램 돌아감 -> 느림
자바는 힙을 주로 사용하고 GC가 알아서 동적할당과 해제를 반복 -> 느림
코드영역/상수영역/힙영역 // 스택영역-스택프레임
static한 녀석들은 객체지향에 반하고 코드가 길어지면 이해가 어렵지만 필요함
static은 메모리상 상수영역에 저장되고, 인스턴스는 이것을 참조함
'취준, 대외활동 > 커널360' 카테고리의 다른 글
D-Day) Kernel360 사전과제 후기 (1) | 2023.10.09 |
---|---|
D-1) 사전과제 벼락치기중 (0) | 2023.10.08 |
사전과제 9일차 : (0) | 2023.10.04 |
사전과제 5일차 : 객체의 역할과 접근제어 (0) | 2023.09.30 |
부트캠프 넣어서 합격했음 (5) | 2023.09.25 |