Java

7์ฃผ์ฐจ ๊ณผ์ œ: ํŒจํ‚ค์ง€ (ํ”ผ๋“œ๋ฐฑ, feedback)

ํ–ฅ์ฐก 2021. 1. 2. 23:05

 

๐Ÿ“Œ ์Šคํ„ฐ๋”” ๊ณต์ง€ ์‚ฌํ•ญ : 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 ํ•  ๋•Œ *๋Œ€์‹  ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค๋ฅผ ๋ณด๊ณ  ์‹ถ์€ ๊ฒฝ์šฐ?

์•„๋ž˜์—์„œ ์ˆซ์ž ์นด์šดํŠธ๋ฅผ ๋Š˜๋ ค์ฃผ๋ฉด ๋œ๋‹ค.