๐ ์คํฐ๋ ๊ณต์ง ์ฌํญ : 15์ฃผ์ฐจ๋ก ๋ณ๊ฒฝ, ์์ฆ2 ๊ฐ์ค ์์
FQCN : Fully Qualified Class Name
ํด๋์ค ๋ค์์ ํ ํจํค์ง ๋ค์๊ณผ ํด๋์ค ๋ค์์ ํฉ์น์ด๋ฆ์ด๋ค.
๋นํธ-์ธ ํจํค์ง(Built-in Package)
ํจํค์ง๋ ์ฌ์ฉ์ ์ ์ ํจํค์ง์ ๋นํธ-์ธ ํจํค์ง๋ก ๋๋๋ค.
๋นํธ์ธ ํจํค์ง๋ java.lang๊ณผ java.util๊ณผ ๊ฐ์ด ์๋ฐ์์ ๊ธฐ๋ณธ์ ์ผ๋ก ์ ๊ณตํ๋ ํจํค์ง๋ฅผ ๋งํ๋ค.
classpath์ต์ ์ ์ธ์ ์ธ ์ ์๋?
1. javac : ์ปดํ์ผ ์
2. java : ์คํ ์
3. ๋ ๋ค(โ ) : (์ปดํ์ผ ์์) maven์์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ dependency๋ฅผ ํ๋ฉด External Libraries์์ ์ถ๊ฐ๋๊ณ ์ด๊ฒ๋ค์ด ํด๋์คํจ์ค์ ๋ค์ด๊ฐ์ ์ฐ๋ฆฌ๊ฐ ์ฝ๋ฉํ ๋(=์ปดํ์ผ ํ ๋) ์ฌ์ฉํ ์ ์๋ ๊ฒ๊ณผ ๊ฐ๋ค.
ํด๋์ค ๋ก๋ ๋งค์ปค๋์ฆ
๋ด๊ฐ ์ฝ์ผ๋ ค๋ ํด๋์ค๊ฐ ๋ถ๋ชจ์ ์๋์ง ๋ฌผ์ด๋ณธ๋ค. ๋ถ๋ชจ๊ฐ ์์ผ๋ฉด ๋ถ๋ชจ๊ฐ ๋ก๋ฉํ ํด๋์ค๋ฅผ ์ฌ์ฉ, ์์ผ๋ฉด ์๊ธฐ ๊ฒ์ ์ฝ์. Stringํด๋์ค ๊ฐ์ ๊ฒ๋ค์ ํด๋์ค ๋ก๋ ์ต์๋จ์ ์๋ ๋ถํธ์คํธ๋ฉ ํด๋์ค ๋ก๋๊ฐ ์ด๋ฏธ ์ฝ์ด๋๋๋ค.
์ธํ ๋ฆฌ์ ์ด์์ ํด๋์ค ํจ์ค
์ฐ์ธก ADD Content Root๋ถ๋ถ
์์คํ ์ค์ > ํด๋์ค ํจ์ค ํ๊ฒฝ๋ณ์ ์ค์ ์ ๋ชจ๋ ํ๋ก์ ํธ์ ๋ค ์ ์ฉ๋๋ค. -> ์ง์ฐ๋ ๊ฒ์ด ์ข๋ค. ๋ผ์ด๋ธ๋ฌ๋ฆฌ๊ฐ ๊ผฌ์ผ ์ ์์ด์
๋ฉ๋ชจ๋ฆฌ ๋์(memory leak)
๋ฉ๋ชจ๋ฆฌ ๋์(memory leak) ํ์์ ์ปดํจํฐ ํ๋ก๊ทธ๋จ์ด ํ์ํ์ง ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณ์ ์ ์ ํ๊ณ ์๋ ํ์์ด๋ค. ํ ๋น๋ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฌ์ฉํ ๋ค์ ๋ฐํํ์ง ์๋ ๊ฒ์ด ๋์ ๋๋ฉด ๋ฉ๋ชจ๋ฆฌ๊ฐ ๋ญ๋น๋๋ค. ์ฆ, ๋ ์ด์ ๋ถํ์ํ ๋ฉ๋ชจ๋ฆฌ๊ฐ ํด์ ๋์ง ์์ผ๋ฉด์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์๋ชป ๊ด๋ฆฌํ ๋ ๋ฐ์ํ๋ค. ์ผ๋ถ ์์ ์์ ๋ฉ๋ชจ๋ฆฌ ์์ค์ด๋ผ๋ ์ฉ์ด๋ก ๋ป์ ์ฎ๊ธฐ๊ธฐ๋ ํ์ง๋ง[2] leak๋ผ๋ ํํ์ ๋จ์ํ ์๋ ๊ฒ ์ด์์ ๊ฐ๋ ์ด๋ฏ๋ก ๋์๋ผ๋ ํํ์ด ๋ ์ ํํ๋ค.
Reference
JVM ํ๋
์ ํ๋ฆฌ์ผ์ด์ ์ด ์ต๋ํ ์ธ ์ ์๋ heap๋ฉ๋ชจ๋ฆฌ ํฌ๊ธฐ๋ฅผ ์ฐพ๋ ๊ณผ์ , ์ฐพ์์ ์คํํ ๋ ๊ทธ ๊ฐ์ ์ฃผ๋ ๊ณผ์
Q) Which of the following is/are true about packages in Java?
1) Every class is part of some package.
2) All classes in a file are part of the same package. ํ ํ์ผ ์์ ๋ชจ๋ ํด๋์ค๋ ๊ฐ์ ํจํค์ง
3) If no package is specified, the classes in the file go into a special unnamed package ๋ํดํธ ํจํค์ง = unnamed package
4) If no package is specified, a new package is created with folder name of class and the class is put in this package.
> 3,4๋ ์๋ก ์์ถฉ
๋ต) 1,2,3
โโ ์ฃผ์
ํด๋์ค ์ด๋ฆ์ด ๊ฐ์ง๋ง ๋ค๋ฅธ ํจํค์ง์์ ์จ ๊ฒฝ์ฐ import๋ฅผ ํ์ง ๋ชปํ๋ค.
์ด๋ฐ ๊ฒฝ์ฐ ๊ฐ์ฒด ์์ฑ์ ํด์ผ ํ ๋๋ ํ ํจํค์ง ๊ฒฝ๋ก๋ฅผ ์ ์ด์ผ ํ๋ค.
Constants Interface๋?
์ธํฐํ์ด์ค์ ๋ชฉ์ ์ ์์๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์๋ ๊ท์ฝ์ ์ ์ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ ๊ฒ
์ํฐ ํจํด : ๋ฌธ์ ์ ๋ํด ์์ฃผ ์ฌ์ฉ๋๋ ํด๊ฒฐ์ฑ ์ด์ง๋ง ์ ์ข์ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ.
package choi.hyang.study.chapter7;
public interface Constants {
// ์ธํฐํ์ด์ค์์ ์ ์ธํ๋ ํ๋๋ ๊ธฐ๋ณธ์ ์ผ๋ก public static final์ด ๋ถ๋๋ค
int NUMBER = 100;
String NAME = "HYANGKEUN";
}
package choi.hyang.study.chapter7;
public class App {
public static void main(String[] args) {
System.out.println(Constants.NAME); // ์ด๋ฐ์์ผ๋ก ์ฌ์ฉ๊ฐ๋ฅํ๋ ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์๋๋ค
}
}
๋ถ์ ์ ํ ์์ ์ฌ์ฉ์ ์
package choi.hyang.study.chapter7;
public class MyBook implements Constants{
private static final String NAME = "myBook";
public static void main(String[] args) {
System.out.println(MyBook.NAME); // ์์ ํ๋๋ฅผ ์ฃผ์ํ๊ณ ์คํํ๋ฉด HYANGKEUN๋์ด
}
}
์ ์ญ์ ์ธ ์์๋ฅผ ์ฌ์ฉํ๋ ค๋ฉด?
package choi.hyang.study.chapter7;
public class Constants {
public static final int NUMBER =100;
public static final String NAME = "HYANGKEUN";
// ์ธ์คํด์ค ์์ฑ์ ๋ง๋๋ค - ์์ฑ์ private
private Constants(){}
}
์ธํ ๋ฆฌ์ ์ด import ํ ๋ *๋์ ๊ตฌ์ฒด์ ์ธ ํด๋์ค๋ฅผ ๋ณด๊ณ ์ถ์ ๊ฒฝ์ฐ?
์๋์์ ์ซ์ ์นด์ดํธ๋ฅผ ๋๋ ค์ฃผ๋ฉด ๋๋ค.
'Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์คํฐ๋ ํ ๋ 9์ฃผ์ฐจ ๊ณผ์ : ์์ธ ์ฒ๋ฆฌ (0) | 2021.01.16 |
---|---|
8์ฃผ์ ๊ณผ์ : ์ธํฐํ์ด์ค (0) | 2021.01.09 |
7์ฃผ์ฐจ ๊ณผ์ : ํจํค์ง (0) | 2021.01.01 |
6์ฃผ์ฐจ ๊ณผ์ : ์์ (feedback, ํผ๋๋ฐฑ) (0) | 2020.12.27 |
6์ฃผ์ฐจ ๊ณผ์ : ์์ (0) | 2020.12.26 |