λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
πŸ€ Java/μš©μ–΄μ •λ¦¬

[Java] 🧐 λ³€μˆ˜λž€?

by ._.sori 2024. 10. 5.

 

πŸͺ½

"ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€."

 

 

 

 

β–Ί λ³€μˆ˜

λ³€μˆ˜λž€, ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 값을 μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 이름이 뢙은 λ©”λͺ¨λ¦¬ 곡간이닀.

λ³€μˆ˜λŠ” λ³€μˆ˜κ°€ μ„ μ–Έλœ μœ„μΉ˜μ— 따라 λ³€μˆ˜μ˜ μ’…λ₯˜λ₯Ό μ •ν•œλ‹€.

 

 

1. 클래슀 λ³€μˆ˜ (μ „μ—­λ³€μˆ˜)

 

클래슀 λ³€μˆ˜μ˜ νŠΉμ§•μ€ 크게 λ„€κ°€μ§€κ°€ μžˆλ‹€.

  • λ³€μˆ˜ νƒ€μž… μ•žμ— static을 뢙인닀.
  • 클래슀 λ³€μˆ˜λŠ” λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅μœ ν•œλ‹€.
  • λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅ν†΅λœ 값을 κ³΅μœ ν•œλ‹€.
  • 클래슀 이름, 클래슀 λ³€μˆ˜λͺ…을 톡해 μ ‘κ·Όν•  수 μžˆλ‹€.

 

 

Q. λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅μœ λœλ‹€λŠ” 말이 무슨 μ˜λ―ΈμΈκ°€?

 

A. μƒμ„±λœ μΈμŠ€ν„΄μŠ€λŠ” 클래슀 λ³€μˆ˜λ₯Ό μ°Έμ‘°ν•œλ‹€λŠ” 것이닀. μ‰½κ²Œ μ„€λͺ…ν•˜μžλ©΄ 클래슀 λ³€μˆ˜λŠ” λ§ˆμ„μ— 놓인 μš°μ²΄ν†΅μ΄κ³  μΈμŠ€ν„΄μŠ€λŠ” 집이라고 λΉ„μœ ν•  수 μžˆλ‹€. μ§‘(μΈμŠ€ν„΄μŠ€)λŠ” μš°μ²΄ν†΅(클래슀 λ³€μˆ˜)에 νŽΈμ§€λ₯Ό κΊΌλ‚Όμˆ˜λ„ νŽΈμ§€λ₯Ό 넣을 μˆ˜λ„ μžˆλ‹€. λͺ¨λ“  집이 λ˜‘κ°™μ€ μš°μ²΄ν†΅μ„ μ“°κΈ° λ•Œλ¬Έμ— μ–΄λ–€ μ§‘μ—μ„œ 넣은 νŽΈμ§€λ₯Ό λ‹€λ₯Έ μ§‘μ—μ„œ κΊΌλ‚΄ λ³Ό 수 μžˆλ‹€.

 

// chat-GPTλ₯Ό 톡해 예제λ₯Ό λ§Œλ“€μ—ˆμŠ΅λ‹ˆλ‹€.

class Counter {

    // static이 뢙은 것을 톡해 클래슀 λ³€μˆ˜λΌλŠ” 것을 μ•Œ 수 μžˆλ‹€.
    // 클래슀 λ³€μˆ˜λ₯Ό 0으둜 μ΄ˆκΈ°ν™”ν–ˆλ‹€.
    static int count = 0;  

    // μƒμ„±μž Counterλ₯Ό 톡해 new Counter()κ°€ 있으면 count λ³€μˆ˜κ°€ μ¦κ°€ν•˜λ„λ‘ ν–ˆλ‹€.
    Counter() {
        count++;  
    }
 
    // ν˜„μž¬ countκ°€ μ–Όλ§ˆλ‚˜ μ¦κ°€ν–ˆλŠ”μ§€ λ³΄μ—¬μ£ΌλŠ” λ©”μ„œλ“œλ₯Ό λ§Œλ“€μ—ˆλ‹€.
    void showCount() {
        System.out.println("Count: " + count);
    }
}

public class Main {
    public static void main(String[] args) {
    
    	// μΈμŠ€ν„΄μŠ€ c1κ³Ό c2κ°€ μƒμ„±λ˜μ—ˆλ‹€.
    	// μƒμ„±μžλ₯Ό 톡해 count++κ°€ μ‹€ν–‰λœλ‹€.
        // c1κ³Ό c2둜 count++κ°€ 총 두 번 μ‹€ν–‰λ˜μ—ˆλ‹€.
        Counter c1 = new Counter();  
        Counter c2 = new Counter();  

        // 이 c1κ³Ό c2λŠ” showCount λ©”μ„œλ“œλ₯Ό 톡해 결과값이 좜λ ₯λœλ‹€.
        // 결과값은 2κ°€ λœλ‹€.
        // 2κ°€ λ‚˜μ˜€λŠ” μ΄μœ λŠ” λ™μΌν•œ 클래슀 λ³€μˆ˜ countλ₯Ό 좜λ ₯ν•˜κΈ° λ•Œλ¬Έμ΄λ‹€.
        c1.showCount();  
        c2.showCount();  
    }
}

 

 

 

 

 


 

 

 

 

 

2. μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ (μ „μ—­λ³€μˆ˜)

 

 

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ˜ νŠΉμ§•μ€ 크게 μ„Έκ°€μ§€κ°€ μžˆλ‹€.

  • μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±λ˜μ–΄μ•Ό λ³€μˆ˜κ°€ μƒμ„±λœλ‹€.
  • 클래슀 객체와 λ‹€λ₯΄κ²Œ κ³΅μœ λ˜μ§€ μ•ŠλŠ”λ‹€.
  • μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ κ³ μœ ν•œ λ‹€λ₯Έ 값을 κ°€μ§ˆ 수 μžˆλ‹€.

 

 

μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ™€ 클래슀 λ³€μˆ˜μ˜ 차이λ₯Ό μ•Œμ•„λ³΄λŠ” 예제λ₯Ό μ°Ύμ•˜λ‹€.

// 좜처 - sujinhopeλ‹˜
public class Main {

    public static class StaticTest {

	// 클래슀 λ³€μˆ˜
        static int classVar = 10;
        //μΈμŠ€ν„΄μŠ€ λ³€μˆ˜
        int instanceVar = 28;

    }


    public static void main(String[] args) {

	// staticTest1κ³Ό staticTest2인 μΈμŠ€ν„΄μŠ€κ°€ μƒμ„±ν–ˆλ‹€.
        StaticTest staticTest1 = new StaticTest();
        StaticTest staticTest2 = new StaticTest();
        
        // μ‹€ν–‰ 값은 1번과 2번 λͺ¨λ‘ 10κ³Ό 28이 λœλ‹€.
        System.out.println("1번 " + staticTest1.classVar + ", " + staticTest1.instanceVar);
        System.out.println("2번 " + staticTest2.classVar + ", " + staticTest2.instanceVar);

	// 클래슀 λ³€μˆ˜ staticTest1의 값을 12둜 λ³€κ²½ν–ˆλ‹€.
        staticTest1.classVar = 12;
        // μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ staticTest1의 값을 400으둜 λ³€κ²½ν–ˆλ‹€.
        staticTest1.instanceVar = 400;

        System.out.println();
        // 1번의 좜λ ₯값은 12와 400이 λœλ‹€.
        // 2번의 좜λ ₯값은 12와 28이 λœλ‹€.
        System.out.println("1번 " + staticTest1.classVar + ", " + staticTest1.instanceVar);
        System.out.println("2번 " + staticTest2.classVar + ", " + staticTest2.instanceVar);;
    }
}

 

클래슀 λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€μ˜ λͺ¨λ“  값을 κ³΅μœ ν•˜κΈ° λ•Œλ¬Έμ— ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€ 값이 λ°”λ€Œλ©΄ λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ 값을 λ³€κ²½λœλ‹€. 
μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€μ˜ 값을 κ³΅μœ ν•˜μ§€ μ•ŠκΈ° λ•Œλ¬Έμ— μΈμŠ€ν„΄μŠ€κ°€ κ°œλ³„μ μœΌλ‘œ 값을 μœ μ§€ν•˜λŠ” 것이 κ°€λŠ₯ν•˜λ‹€.

 

 

 

 

Q. 클래슀, μΈμŠ€ν„΄μŠ€, 클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜κ°€ 무엇인가?

 

A. λΉ„μœ λ‘œ 예λ₯Ό 듀어보겠닀. [ ν΄λž˜μŠ€λŠ” λΉ΅ν‹€  ,  μΈμŠ€ν„΄μŠ€λŠ” λΉ΅ν‹€λ‘œ 찍어낸 λΉ΅  ,  클래슀 λ³€μˆ˜λŠ” 빡에 ν‘œμ‹μ„ λ‚¨κΈ°λŠ” λΉ΅μ§‘μ˜ μ‹œκ·Έλ‹ˆμ²˜(?)  ,  μΈμŠ€ν„΄μŠ€ λ³€μˆ˜λŠ” λΉ΅ μ•ˆμ— λ“€μ–΄κ°€λŠ” 잼 ]으둜 생각할 수 μžˆλ‹€.

 

 

 

 


 

 

 

 

 

3. μ§€μ—­λ³€μˆ˜

  • λ©”μ„œλ“œ λ‚΄μ—μ„œ μ„ μ–Έλœλ‹€.
  • λ©”μ„œλ“œκ°€ 싀행될 λ•Œ λ©”λͺ¨λ¦¬λ₯Ό ν• λ‹Ήλ°›λŠ”λ‹€.
  • λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ†Œλ©Έλ˜μ–΄ 사라진닀.

 

// 좜처 - sujinhopeλ‹˜
public class Main {

    public static class StaticTest {

	// μ „μ—­λ³€μˆ˜ 쀑 ν•˜λ‚˜μΈ 클래슀 λ³€μˆ˜μ΄λ‹€.
        static int classVar = 10;
        // μ „μ—­λ³€μˆ˜ 쀑 ν•˜λ‚˜μΈ μΈμŠ€ν„΄μŠ€ λ³€μˆ˜μ΄λ‹€.
        int instanceVar = 28;

	// λ©”μ„œλ“œμΈ methodλ₯Ό λ§Œλ“€μ—ˆλ‹€.
        public void method() {
            // μ§€μ—­λ³€μˆ˜ localVar
            int localVar = -100;
            System.out.println("μ§€μ—­ λ³€μˆ˜ κ°’ : " + localVar);
        }

    }


    public static void main(String[] args) {

	// localTest μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€μ—ˆλ‹€.
        StaticTest localTest = new StaticTest();
	// μΈμŠ€ν„΄μŠ€λ₯Ό 톡해 method μ‹€ν–‰ν•œλ‹€.
        localTest.method();
    }
}

 

 

 

 

 

 

 

혼자 κ³΅λΆ€ν•˜λ©΄μ„œ μ΄ν•΄ν•˜κ³  μ“΄ λ‚΄μš©μ΄λΌ ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

λŒ“κΈ€λ‘œ μ μ–΄λ‘μ‹œλ©΄ μˆ˜μ •ν•˜λ„λ‘ ν•˜κ² μŠ΅λ‹ˆλ‹€. πŸ€

 

[ λΈ”λ‘œκ·Έμ— μ“΄ λ‚΄μš©λ“€μ˜ μΆœμ²˜λŠ” μ•„λž˜μ— μ μ–΄λ‘˜ν…Œλ‹ˆ

λ“€μ–΄κ°€μ„œ μ½μ–΄λ³΄μ‹œλ©΄ λ”μš± 도움이 λ˜μ‹€ λ“― ν•©λ‹ˆλ‹€ ]

 

 

 

 


 

< 이후 ν¬μŠ€νŒ… - μΈμŠ€ν„΄μŠ€, μƒμ„±μž, λ§€κ°œλ³€μˆ˜μ™€ 인자의 차이>

 

 

κΈ°λ³Έ μš©μ–΄ 정리 - 🧐 μΈμŠ€ν„΄μŠ€, μƒμ„±μž 그리고 λ§€κ°œλ³€μˆ˜(Parameter)와 인자(Argument)의 차이

κΈ°λ³Έ μš©μ–΄ 정리 - 🧐 λ³€μˆ˜λž€?πŸͺ½"ν‹€λ¦° λ‚΄μš©μ΄ μžˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€."    β–Ί λ³€μˆ˜λ³€μˆ˜λž€, ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 값을 μ €μž₯ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•˜λŠ” 이름이 뢙은 λ©”λͺ¨λ¦¬ 곡간이닀.λ³€μˆ˜λŠ” λ³€μˆ˜κ°€ μ„ μ–Έ

post-this.tistory.com

 

 


 

 

- λ³€μˆ˜μ˜ κ°œλ… 정리 좜처

 

[JAVA] μžλ°”μ˜ λ³€μˆ˜ (클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ§€μ—­ λ³€μˆ˜)

이 글은 PC 버전 TISTORY에 μ΅œμ ν™” λ˜μ–΄μžˆμŠ΅λ‹ˆλ‹€. μ„ μ–Έ μœ„μΉ˜μ— λ”°λ₯Έ λ³€μˆ˜μ˜ μ’…λ₯˜ μžλ°”μ—μ„œμ˜ λ³€μˆ˜λŠ” 클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ§€μ—­ λ³€μˆ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€. λ³€μˆ˜μ˜ μ’…λ₯˜λ₯Ό κ²°μ •μ§“λŠ” 것은 'λ³€μˆ˜κ°€ μ„ μ–Έ

itmining.tistory.com

 

 

- sujinhopeλ‹˜μ˜ 예제 좜처

 

[java] ν΄λž˜μŠ€λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 차이(staticλ³€μˆ˜μ™€ non Staticλ³€μˆ˜) - Break Out of Your Comfort Zone

λͺ©μ°¨ 클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜ 클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜, μ§€μ—­ λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬μ— μ μž¬λ˜λŠ” μœ„μΉ˜ 클래슀 λ³€μˆ˜(Static)의 주의점, 클래슀 λ³€μˆ˜κ°€ ν•„μš”ν•œ 이유 클래슀 λ³€μˆ˜, μΈμŠ€ν„΄μŠ€ λ³€μˆ˜

sujinhope.github.io

 

 

- μ „μ—­λ³€μˆ˜μ™€ μ§€μ—­λ³€μˆ˜μ˜ κ°œλ… 정리 좜처

 

ꡬ름EDU - λͺ¨λ‘λ₯Ό μœ„ν•œ λ§žμΆ€ν˜• ITꡐ윑

ꡬ름EDUλŠ” λͺ¨λ‘λ₯Ό μœ„ν•œ λ§žμΆ€ν˜• ITꡐ윑 ν”Œλž«νΌμž…λ‹ˆλ‹€. 개인/학ꡐ/κΈ°μ—… 및 κΈ°κ΄€ 별 μ΅œμ ν™”λœ ITꡐ윑 μ†”λ£¨μ…˜μ„ κ²½ν—˜ν•΄λ³΄μ„Έμš”. κΈ°μ΄ˆλΆ€ν„° 싀무 ν”„λ‘œκ·Έλž˜λ° ꡐ윑, μ „κ΅­ μ΄ˆμ€‘κ³ /λŒ€ν•™κ΅ 온라인 μˆ˜μ—…, κΈ°μ—…/

edu.goorm.io

 

 

- chatGPT의 도움도 λ°›μ•˜μŠ΅λ‹ˆλ‹€.