이글은 백기선님 스터디 할래? 스터디를 뒤늦게 따라간 기록입니다.
스터디할래 링크 >> https://github.com/whiteship/live-study
이필기를 시작으로 공부했습니다 >> https://kils-log-of-develop.tistory.com/430
https://sangwoobae.github.io/posts/java-livestudy-7week/
여기 없는내용은 스터디 할래 강의 내용 혹은 제가 java Doc보고작성하거나 예제를 만들어 추가했습니다.
그외는 같이 출처가 써있습니다.
package 키워드 | 패키지 이름은 java로 시작하면안된다. 소스 첫줄, 폴더이름과 패키지 이름이 같아야 FQCN : Fully Qualified Class Name : 패키지이름과 정의된 클래스 모 표현되야 정확한 표현 ex) java.lang.String |
FQCN | FQCN : Fully Qualified Class Name : 패키지이름과 정의된 클래스 모 표현되야 정확한 표현 |
패키지이름 규칙 | java : 자바기본 패키지 javax : 자바 확장패키지 org : 비영리단체(오픈소스) 패키지 com : 영리단체(회사) 패키지 패키지 이름은 모두 소문자. 자바 예약어 사용불가 빌트인 패키지 : 자바는 개발자들이 사용하는 패키지, 클래스 제공 ex) import java.lang.System, import java.lang.String |
import 키워드 | import 패키지* 사용가능. import static * import 하지 않아도 되는 패키지 java.lang, 같은패키지 |
접근제어자 | public 누구나 접근 protected 같은패키지, 상속받은경우 private-package = default : 같은패키지내 private 해당클래스내 |
클래스 패스 | JVM이 프로그램 실행할때 클래스파일을 찾는데 기준되는 파일경로. - java runtime -classpath - javac -classpath - 환경변수 CLASSPATH 안하는쪾으로..개발할때 라이브러리 꼬일수있음. CLASSPATH= |
클래스 패스 옵션은 언제 쓸수 있나? | 둘다 or javac or java >> 둘다 쓸수 있다. cf) maven pom.xml scop- runtime, provied.. 의존성설정 관련되어있다고함. |
클래스 로더. | java 에 3가지 기본 클래스 로더 존재 Bootstrap class loader : 최상위 클래스 로더, jre/lib/rt.jar 에 담긴 JDK 클래스 파일 로딩 : 원시 클래스 로더 : Primordial ClassLoader Extension class loader : jre/lib/ext , java.ext.dirs 로 지정된 클래스파일 로딩. Application class loader : classpath 나 jar 파일 안에 있는 Manifest파일의 class-path 속성값으로 지정된 폴더의 클래스 로딩 : 자가 애플리케이션 구동을 위해 직접 작성한 대부분클래스는 애플리케이션 클래스 로더에 의해로딩 동작 3원칙 1. 위임 : 클래스 로딩 작업을 상위 클래스 로더 위임 2. 가시범위 원칙 : 하위클래스 로더 상위클래스로더 볼수 있지만 상위는 하위클래스로더 로딩 볼수없음 3. 유일성 원칙 : 하위 클래스로더는 상위 클래스 로더가 로딩한 클래스를 다시로딩하지 못함 https://umanking.github.io/2019/06/25/java-class-loader/#:~:text=%E2%80%BB%20rt.jar%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%EB%9E%80,%EC%8B%9C%EC%97%90%20%EB%A9%94%EB%AA%A8%EB%A6%AC%EC%97%90%20%EC%98%AC%EB%A6%B0%EB%8B%A4. |
rt.jar | RunTime 코어 자바클래스의 콜렉션, JVM 에서 rt.jar 파일에 담긴 클래스 파일을 런타임때 메모리에 올림. String, System 클래스가 rt.jar 안에 있음. |
Built-in 패키지 | 패키지 = 사용자정의패키지 + 빌트인패키지 java.lang : 프리미티브타입, String java.io : 입출력 java.util : 자료구조 Linked, Dictionary Time, Date java.applet : Applets 생성 java.awt : GUI 컴포넌트를 구현하기 위한 클래스들을 포함하는 패키지 java.net : 네트워킹 지원 https://ahnyezi.github.io/java/javastudy-7-package/ |
테스트 주도개발 저자 켄트 벡|역자 김창준, 강규영|인사이트
maven or gradle 반드시 공부할것.
java9 부터 모듈화가 많이됨.
클래스로더 계층구조.
부트스트랩: 최상단
1. 부모한테 있는가?
2. 부모한테 없으면 자기가 읽음.
보통 최상단 rt.jar에 java.lang을 읽어둠.
heap 사이즈는 기본적으로 다이나믹. min max... 똑같이 썼었다.....요즘도...
java실행중 max 조정하는방법? 메모리누수.....그걸고칩시다.>> 실행할때 정해짐.
튜닝 : 애플리케이션이 최대한으로 쓸수있는 heap을 찾는 과정.
https://www.geeksforgeeks.org/java/?ref=ghm
Constant Interface >> 쓰지마세용...
---------------------------------------
public interface Constats{
int NUMBER = 100;
String NAME = "NAME";
}
public class myBook implements Constants{
private static final String NAME ="";
]
}
-----------------------------------------
>> 1. anti patten. : 인터페이스가 존재하는 목적이 아님. 규약 정하는게 목적.
>> 2. 상수를 갖고 인스턴스를 만들게됨.
인터페이스는 기본적으로 public static 이 써있음. .
public class Constants{
public static final int NUMBER=100;
private Constants(){} // 생성못하게 막음.
}
!! ENUM >> 선택가능한값 고정할때!!!
JPA.. 쿼리 DSR
--------------------------------------------
import를 구체적 or 포괄적 ... 설정... java > import > Class.... 999 이렇게 넣으면 패키지.* 사용하지 않음(명시적)
- package 키워드
- import 키워드
- 클래스패스
- CLASSPATH 환경변수
- -classpath 옵션
- 접근지시자
'JAVA > Basic' 카테고리의 다른 글
[스터디할래? Java 09]예외처리 (0) | 2021.05.14 |
---|---|
[스터디할래? Java 08]인터페이스 (0) | 2021.05.14 |
[스터디할래? Java 06]상속 (0) | 2021.05.14 |
[스터디할래? Java 05] 클래스_ BinrayTree_DFS,BFS (0) | 2021.04.27 |
[스터디할래? Java 04] 제어문 (0) | 2021.04.14 |