πŸ“š μ±… μ†Œκ°œν•˜κΈ°

λ‚΄κ°€ μ‚¬μš©ν•œ μžλ°”μ™„μ „μ •λ³΅ μ±… 링크!
γ„΄ κΉ€λ™ν˜• μ§€μŒ, μ΄μ§€μŠ€νΌλΈ”λ¦¬μ‹±

 

 

 

: 좜처 예슀24 ν™ˆνŽ˜μ΄μ§€

 

 

 

이 책을 κ³ λ₯΄κ²Œ 된 μ΄μœ λŠ” 친ꡬ의 μΆ”μ²œμ΄μ—ˆλ‹€. ꡉμž₯히 κΌΌκΌΌν•˜κ²Œ μ ν˜€μžˆμ–΄ μ΄ν•΄ν•˜κΈ° μ‰½λ‹€λŠ” 이유둜 μΉœκ΅¬λŠ” 이 책을 κ³¨λžλ‹€κ³  ν–ˆλ‹€. λ‚˜λ„ κ·Έλž˜μ„œ κ·Έλƒ₯ 따라샀닀. μ‹€μ œλ‘œ 책을 μ‚΄νŽ΄λ³΄λ‹ˆ ꡉμž₯히 κΌΌκΌΌν•˜κ²Œ μ •λ¦¬λ˜μ–΄μžˆλ‹€. λ‹€λ₯Έ 책은 λ³Έ 적이 μ—†μ–΄ 비ꡐ가 λΆˆκ°€ν•˜μ§€λ§Œ, λ‚΄ μƒκ°μœΌλ‘  처음 μžλ°”λ₯Ό κ³΅λΆ€ν•œλ‹€λ©΄ 이 책을 가지고 μΆ©λΆ„νžˆ λ”°λΌκ°ˆ 수 μžˆμ„ λ“― ν•˜λ‹€. λͺ¨λ‘λ“€ ν™”μ΄νŒ…!!

 

 

🐰

 


 

 

βœ”οΈ   ν•„λ“œμ™€ μ§€μ—­λ³€μˆ˜_ 222p

 

 ν•„λ“œ 

:  ν΄λž˜μŠ€μ— ν¬ν•¨λœ λ³€μˆ˜

 

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

:  λ©”μ„œλ“œμ— ν¬ν•¨λœ λ³€μˆ˜

Class A {
	
    mκ³Ό n은 ν•„λ“œ
    int m = 1;
    int n = 2;
    
    void B() {
    	kλŠ” μ§€μ—­λ³€μˆ˜
    	int k = 3;
        System.out.println(k);
    }
}

 

ν•„λ“œμ™€ μ§€μ—­λ³€μˆ˜μ˜ 큰 차이점은 μƒμ„±λ˜λŠ” λ©”λͺ¨λ¦¬μ˜ μœ„μΉ˜λ‹€. λ©”λͺ¨λ¦¬λŠ” 클래슀 μ˜μ—­ - μŠ€νƒ μ˜μ—­ - νž™ μ˜μ—­μœΌλ‘œ λ‚˜λˆ μ ΈμžˆλŠ”λ°, κ·Έ 쀑 ν•„λ“œλŠ” νž™ μ˜μ—­μ— μƒμ„±λ˜κ³  μ§€μ—­λ³€μˆ˜λŠ” μŠ€νƒ μ˜μ—­μ— μƒμ„±λœλ‹€.

ν•„λ“œμ˜ 경우 νž™ μ˜μ—­μ— μƒμ„±λ˜μ–΄ μžλ°” 가상 머신이 μžλ™μœΌλ‘œ μ‚­μ œν•˜μ§€ μ•Šμ•„ 객체가 사라지지 μ•ŠλŠ” ν•œ μ ˆλŒ€λ‘œ μ‚­μ œλ˜μ§€ μ•ŠλŠ”λ‹€. ν•˜μ§€λ§Œ μŠ€νƒ μ˜μ—­μ— μ €μž₯된 μ§€μ—­λ³€μˆ˜μ˜ 경우 μ€‘κ΄„ν˜Έκ°€ λ‹«ν˜€ λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μžλ°” 가상 머신이 μžλ™μœΌλ‘œ μ‚­μ œν•œλ‹€. 고둜 μ§€μ—­λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬μ—μ„œ ν†΅μ§Έλ‘œ μ‚­μ œλ˜λŠ” 것이닀.

μ΄λ•Œ νž™ μ˜μ—­μ—λŠ” μ§€μ—­λ³€μˆ˜μ˜ λ©”μ„œλ“œ λ²ˆμ§€λ§Œ μ‘΄μž¬ν•œλ‹€. λ©”μ„œλ“œμ— κ΄€ν•œ λ‚΄μš©μ€ 클래슀 μ˜μ—­μ— μžˆλ‹€.

 

 

 

• ν•„λ“œμ™€ μ§€μ—­λ³€μˆ˜μ˜ μ΄ˆκΉƒκ°’

Class A {
    int m;
    int n;
    
    void B() {
    int k;
    System.out.println(k);
    }
    
    A a = new A();
    System.out.println(a.m);
    System.out.println(a.n);
    a.B();
}
mκ³Ό n은 ν•„λ“œμ— μžˆλ‹€. ν•„λ“œμ— μžˆλŠ” λ³€μˆ˜λŠ” μ΄ˆκΈ°ν™”λ₯Ό ν•˜μ§€ μ•Šμ•„λ„ νž™ λ©”λͺ¨λ¦¬μ˜ νŠΉμ„±μƒ κ°•μ œλ‘œ μ΄ˆκΈ°ν™”λ₯Ό ν•˜κΈ° λ•Œλ¬Έμ— 값이 0으둜 좜λ ₯λœλ‹€. ν•˜μ§€λ§Œ μ§€μ—­λ³€μˆ˜λŠ” μ•„λ‹ˆλ‹€. μ§€μ—­λ³€μˆ˜μ˜ 값을 μ΄ˆκΈ°ν™”ν•˜μ§€ μ•ŠμœΌλ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€. μ €μž₯곡간이 빈 κ³΅κ°„μœΌλ‘œ 있기 λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν•˜λŠ” 것이닀. 그렇기에 System.out.println(k)와 a.BλŠ” μ œλŒ€λ‘œ λ™μž‘ν•˜μ§€ μ•ŠλŠ”λ‹€.

 

 

 

 


 

 

 

βœ”οΈ   λ¦¬ν„΄νƒ€μž…μ˜ λ©”μ„œλ“œ_ 229p

 

• λ©”μ„œλ“œ

: 클래슀의 κΈ°λŠ₯에 ν•΄λ‹Ήν•˜λŠ” μš”μ†Œ

리턴 νƒ€μž…μ΄ μ—†λŠ” 경우
void print() {
    System.out.println("μ•ˆλ…•");
}

리턴 νƒ€μž…μ΄ int, μž…λ ₯λ§€κ°œλ³€μˆ˜κ°€ μžˆλŠ” 경우
int sum(int a, int b) {
	return a + b
}
리턴 νƒ€μž…μ΄ μ—†λŠ” 경우 voidλ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…μ‹œν•˜λ©΄ λœλ‹€. sum λ©”μ„œλ“œλŠ” λ§€κ°œλ³€μˆ˜λ‘œ a와 bλ₯Ό λ°›λŠ”λ‹€. a와 b 값은 더해지며 κ·Έ 값을 intν˜•μœΌλ‘œ return ν•˜κ²Œ λœλ‹€. μ—¬κΈ°μ„œ a와 bλŠ” μ§€μ—­λ³€μˆ˜λͺ…이 λœλ‹€.

 

 

Q. void둜 리턴 νƒ€μž…μ΄ μ—†λŠ” λ©”μ„œλ“œμ˜ 경우 return을 μ‚¬μš©ν•  수 μ—†λ‚˜?

 A. μ‚¬μš©ν•  수 μžˆλ‹€. λ‹€λ§Œ 주둜 μ–΄λ–€ 값을 λŒλ €μ£ΌκΈ°λ³΄λ‹€, 쑰건에 맞으면 λ©”μ„œλ“œλ₯Ό μ’…λ£Œμ‹œμΌœλΌμ™€ 같이 λ©”μ„œλ“œμ˜ μ’…λ£Œμ— μ΄ˆμ μ„ 맞좰 μ‚¬μš©ν•œλ‹€.
public void print() {
    if(a < 0) {
        System.out.println("λ©”μ„œλ“œ μ’…λ£Œ")
        return;
    }
    
    System.out.println("aλŠ” " + a);
}


λΆˆν•„μš”ν•œ μ½”λ“œ 싀행을 λ°©μ§€ν•˜λ©° 주둜 λ©”μ„œλ“œ μ’…λ£Œλ₯Ό 원할 λ•Œ return을 μ‚¬μš©ν•œλ‹€.

 

 

 

 

• 클래슀 μ™ΈλΆ€ 호좜

: 클래슀 μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•˜λ €λ©΄ 객체λ₯Ό μƒμ„±ν•˜λ©΄ λœλ‹€.

class A {
    int data() {
         return 3;
    }
}

public class B {
     public static void main(String[] args) {
    	객체 생성
        A a = new A();       
        System.out.println("data = " + a.data());
    }
}

 

 

 

• 클래슀 λ‚΄λΆ€ 호좜

클래슀 내뢀에 μžˆλŠ” λ©”μ„œλ“œλΌλ¦¬λŠ” 객체 생성없이 ν˜ΈμΆœν•  수 μžˆλ‹€.

public class A {
    public static void main(String[] args) {    
        print();
    }
    
    public static void print() {
       System.out.println("μ•ˆλ…•");
    }
}
λ©”μ„œλ“œμ— static이 λΆ™μ–΄ 있으면 static이 뢙은 ν•„λ“œ λ˜λŠ” λ©”μ„œλ“œλ§Œ ν˜ΈμΆœν•  수 μžˆλ‹€.

 

 

 

 


 

 

 

 

βœ”οΈ   κΈ°λ³Έ μžλ£Œν˜•κ³Ό μ°Έμ‘°μžλ£Œν˜•μ˜ μž…λ ₯λ§€κ°œλ³€μˆ˜ 차이_ 235p

 

  κΈ°λ³Έ μžλ£Œν˜• μž…λ ₯λ§€κ°œλ³€μˆ˜

Class A {

   public static int twice(int a) {
      a = a * 2;
      return a;
   }

   public static void main(String[] ar) {
      int a = 3;
      int k1 = twice(a);
   }
   
}
k1이 aλ₯Ό κ°€μ Έκ°€ twice λ©”μ„œλ“œλ₯Ό μ΄μš©ν•˜λ©΄ aλŠ” 6μ΄λΌλŠ” κ°’μœΌλ‘œ returnν•˜κ²Œ λœλ‹€. 그러면  k1은 6이 λœλ‹€. μ΄λ•Œ λ³€μˆ˜ aλŠ” 3μ—μ„œ 6의 κ°’μœΌλ‘œ λ³€λ™λ˜κ² μ§€λ§Œ μ§€μ—­λ³€μˆ˜ a이기 λ•Œλ¬Έμ— main에 μžˆλŠ” aλŠ” λ³€λ™λ˜μ§€ μ•ŠλŠ”λ‹€. μ§€μ—­λ³€μˆ˜λŠ” ν•΄λ‹Ή λ©”μ„œλ“œκ°€ μ’…λ£Œλ˜λ©΄ μ‚¬λΌμ§€κ²Œ λœλ‹€. κ·ΈλŸ¬λ―€λ‘œ twice λ©”μ„œλ“œκ°€ aλ₯Ό κ°€μ Έλ‹€ μˆ˜ν–‰ν•΄λ„ 그것은 λ³΅μ‚¬λœ 것이기에 main ν•¨μˆ˜μ˜ λ³€μˆ˜ a 값은 λ³€λ™λ˜μ§€ μ•Šκ³  λ§ˆλ¬΄λ¦¬λœλ‹€.

 

 

 

 

  μ°Έμ‘° μžλ£Œν˜• μž…λ ₯λ§€κ°œλ³€μˆ˜

public class A {
   public static void main(String[] args) {
      int[] array = new int[] {1,2,3};
      modify(array);
      }
      
   public static void modify(int[] a) {
      a[0] = 4;
      a[1] = 5;
      a[2] = 6;
   }
}
modify에 λ„˜κ²¨μ§„ λ°°μ—΄, μ°Έμ‘°μžλ£Œν˜•μ€ μŠ€νƒ λ©”λͺ¨λ¦¬μ— μ‹€μ œ 객체가 μ•„λ‹Œ 객체의 μœ„μΉ«κ°’μ„ μ €μž₯ν•˜κ²Œ λœλ‹€. 그렇기에 객체의 참쒃값이 μ „λ‹¬λ˜μ–΄ λ³΅μ‚¬λœλ‹€. 그러면 main에 μžˆλŠ” λ°°μ—΄κ³Ό modify에 이용된 λ°°μ—΄ λͺ¨λ‘ 같은 객체λ₯Ό λ°”λΌλ³΄κ²Œ λœλ‹€. modify λ©”μ„œλ“œμ—μ„œ λ°°μ—΄μ˜ 값을 λ³€κ²½ν•˜κ²Œ 되면 main에 μžˆλŠ” 배열도 같이 λ°”λ€Œκ²Œ λ˜λŠ” μ΄μœ λ‹€.

 

 

 


 

 

 

βœ”οΈ   μ˜€λ²„λ‘œλ”©λœ λ©”μ„œλ“œ_ 239p

 

  λ©”μ„œλ“œ μ‹œκ·Έλ‹ˆμ²˜

: λ©”μ„œλ“œλ₯Ό κ΅¬λΆ„ν•˜λŠ” κΈ°μ€€ μ—­ν• λ‘œ λ©”μ„œλ“œλͺ…, μžλ£Œν˜•μ΄ 기쀀이 λœλ‹€. (리턴 νƒ€μž…μ€ μ‹œκ·Έλ‹ˆμ²˜κ°€ μ•„λ‹ˆλ‹€)

 

 

  μ˜€λ²„λ‘œλ”©

같은 μ΄λ¦„μ΄μ§€λ§Œ μžλ£Œν˜•μ΄ λ‹€λ₯Έ 것

public static void print() {
   System.out.println("데이터 μ—†μŒ");
}

public static void print(int a) {
   System.out.println(a);
}

public static void print(double a) {
   System.out.println(a);
}

 

 

 


 

 

βœ”οΈ   μƒμ„±μž νŠΉμ§•_ 247p

 

  μƒμ„±μž

객체λ₯Ό μƒμ„±ν•˜λŠ” 역할을 μ§€λ‹Œ 클래슀의 λ‚΄λΆ€ ꡬ성 μš”μ†Œλ‘œ ν΄λž˜μŠ€μ™€ 같은 이름이며 λ¦¬ν„΄νƒ€μž…μ΄ μ—†λ‹€. 

Class A {

    ν•„λ“œ
    int m;
    
    λ©”μ„œλ“œ work
    void work() {
        ...
    }
    
    μƒμ„±μž A
    /* A() {
    
    } */
    
}

Class B {
    
    int m;
    
    void work() {
        ...
    }
    
    
    B(int a) {
    	this.a = a;
    }
}

public class pratice {
    public static void main(String[] args){
        
        A a = new A();
        B b = new B();
        B b = new B(1);
 
        a.work();
        b.work();
 
    }
}
κΌ­ μƒμ„±μžλ₯Ό μ¨μ•Όν•˜λŠ” 것은 μ•„λ‹ˆλ‹€. μƒμ„±μžλ₯Ό 쓰지 μ•Šμ•„λ„ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μ μœΌλ‘œ μƒμ„±μžλ₯Ό λ„£μ–΄ μž‘λ™μ‹œν‚¨λ‹€. 그런데 클래슀 B처럼 단 ν•˜λ‚˜μ˜ μƒμ„±μžλΌλ„ 있으면 λͺ¨λ“  μƒμ„±μžλ₯Ό λ§Œλ“€μ–΄μ€˜μ•Όν•œλ‹€. ν˜„μž¬ κΈ°λ³Έ μƒμ„±μž Bλ₯Ό μ½”λ“œμ— 적지 μ•Šμ•˜λ‹€. κ·Έλ ‡κ²Œλ˜λ©΄ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

 

 

 

  λ‹€μ–‘ν•œ μƒμ„±μž

Class A {

    A() {
        System.out.println("첫번째 μƒμ„±μž");
    }
    
    A(int a) {
        System.out.println("λ‘λ²ˆμ§Έ μƒμ„±μž");
    }
}

public class pratice {
    public static void main(String[] args) {
        A a1 = new A();
        A a2 = new A(2);
     }
}
λ©”μ„œλ“œμ²˜λŸΌ μƒμ„±μžλ„ μ˜€λ²„λ‘œλ”©μ„ ν•  수 μžˆλ‹€. μœ„μ˜ μ½”λ“œλŠ” κΈ°λ³Έ μƒμ„±μž λͺ¨μ–‘μœΌλ‘œλ§Œ 객체λ₯Ό μƒμ„±ν•œ 것과 intν˜• 값을 μž…λ ₯으둜 λ°›μ•„ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜λŠ” 객체λ₯Ό λ§Œλ“€μ—ˆλ‹€.

 

 

 

 

 

 

+ Recent posts