728x90
λ°˜μ‘ν˜•

1) μ—°μ‚°μž

 

1-1) μ—°μ‚°μžλž€?

      νŠΉμ •ν•œ μž‘μ—…μ„ ν•˜κΈ° μœ„ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 기호

 

1-2) μ—°μ‚°μžμ˜ μ’…λ₯˜ : λŒ€μž…, μ‚°μˆ , 비ꡐ, 논리

 

1-3) μ‚°μˆ  μ—°μ‚°μž : μˆ˜ν•™μ μΈ κ³„산에 μ‚¬μš©λ˜λŠ” μ—°μ‚°μž

        +  (λ”ν•˜κΈ°)   - (λΉΌκΈ°)       *(κ³±ν•˜κΈ°)     /(λ‚˜λˆ„κΈ°)      %(λ‚˜λ¨Έμ§€)

 

1-4) 단항 μ—°μ‚°μž : μ’Œν•­κ³Ό μš°ν•­μ΄ μžˆμ§€ μ•Šμ€ μ—°μ‚°μž ex) +3, -3

   

+ : μ–‘μˆ˜λ₯Ό ν‘œν˜„ν•œλ‹€ / μ‹€μ œλ‘œ μ‚¬μš©ν•  ν•„μš”κ°€ μ—†λ‹€

- : 음수λ₯Ό ν‘œν˜„ν•œλ‹€

++ : 증가 μ—°μ‚°μžλ‘œ ν•­μ˜ 값을 1μ”© μ¦κ°€μ‹œν‚¨λ‹€

- -  : κ°μ†Œ μ—°μ‚°μžλ‘œ λ‹€μŒ ν•­μ—μ„œ 값을 1μ”© κ°μ†Œμ‹œν‚¨λ‹€.

 

더보기

public static void main(String[] args) {

// result의 값은 3

int result = 1 + 2;

System.out.println(result);

// result의 값은 2

result = result - 1;

System.out.println(result);

// result의 값은 4

result = result * 2;

System.out.println(result);

// result의 값은 2

result = result / 2;

System.out.println(result);

// result의 값은 10

result = result + 8;

System.out.println(result);

닡은

 

3

2

4

2

10

 

더보기

public static void main(String[] args) {

int i = 3;

i++;

System.out.println(i); // 4 좜λ ₯

++i;

System.out.println(i); // 5좜λ ₯

System.out.println(++i); // 6좜λ ₯

System.out.println(i++); // 6좜λ ₯

System.out.println(i); // 좜λ ₯

}

닡은 

 

4

5

6

6

7

 

1-5) μ—°μ‚°μž μš°μ„ μˆœμœ„ : μ •μ²˜κΈ° ν•„κΈ°λ•ŒλŠ” 쑰금 μ€‘μš”ν•˜μ§€λ§Œ μ‹€μ œλ‘œ μ½”λ”©μ—μ„œλŠ” μ™ΈμšΈ ν•„μš”κ°€ μ—†λ‹€κ³  함.. 

2) 상속

 

2-1)  μƒμ†μ˜ ν•„μš”μ„± : (a)의 경우라면 ν΄λž˜μŠ€λ§ˆλ‹€ μ€‘λ³΅λœ λ‚΄μš©μ„ 두어야 ν•˜κ³ , 이와 같은 ν•„λ“œλ‚˜ λ©”μ„œλ“œλ₯Ό μˆ˜μ •ν•  λ•ŒλŠ” 3개클래슀 λͺ¨λ‘μ—μ„œ ν•΄μ•Όν•˜μ§€λ§Œ μ΄λŠ” μ€‘λ³΅λœ μ½”λ“œλ₯Ό λ°œμƒμ‹œν‚€κ³ , μœ μ§€ λ³΄μˆ˜ν•˜κΈ° μ–΄λ ΅κ²Œ λ§Œλ“ λ‹€. λ”°λΌμ„œ, μ€‘λ³΅λ˜λŠ” μ½”λ“œλ₯Ό ν΄λž˜μŠ€λ§ˆλ‹€ λ‘κΈ°λ³΄λ‹€λŠ” ν•œκ³³μœΌλ‘œ ν†΅ν•©ν•΄μ„œ λ³„λ„μ˜ 클래슀둜 두면 μ½”λ“œλ„ κ°„κ²°ν•˜κ³  κ΄€λ¦¬ν•˜κΈ° νŽΈν•˜λ‹€

a) 상속을 μ‚¬μš©ν•˜κΈ° μ „

b) 상속을 μ μš©ν•œ ν›„

2-2) μƒμ†μ΄λž€?

- μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ ν΄λž˜μŠ€μ—μ„œ 물렀받은 멀버λ₯Ό κ·ΈλŒ€λ‘œ μ‚¬μš©ν•˜κ±°λ‚˜ λ³€κ²½ν•  수 있고 μƒˆλ‘œμš΄ 멀버λ₯Ό μΆ”κ°€ν•  수 이싿. 

- λ”°λΌμ„œ μžμ‹ ν΄λž˜μŠ€λŠ” λŒ€μ²΄λ‘œ λΆ€λͺ¨ ν΄λž˜μŠ€λ³΄λ‹€ μ†μ„±μ΄λ‚˜ λ™μž‘μ΄ λ§Žλ‹€.

 

2-3) μƒμ†μ˜ μ„ μ–Έ

: μžμ‹ ν΄λž˜μŠ€λŠ” λΆ€λͺ¨ ν΄λž˜μŠ€λ‘œλΆ€ν„° ν™•μž₯λœλ‹€λŠ” 의미둜 extneds ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ 상속 관계λ₯Ό μ„ μ–Έν•œλ‹€.

- 닀쀑 상속은 μ•ˆλ¨(ν•œλ²ˆμ— λ‘κ°œ 이상 λ‚˜μ—΄μ€ μ•ˆλ¨) ν•˜μ§€λ§Œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό ν†΅ν•˜μ—¬ 닀쀑 μƒμ†μ˜ 효과λ₯Ό 얻을 수 μžˆλ‹€κ³ λ„ 함

 

2-4) λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©

: λΆ€λͺ¨ν΄λž˜μŠ€μ˜ λ©”μ„œλ“œκ°€ μžμ‹ ν΄λž˜μŠ€μ— μ ν•©ν•˜μ§€ μ•Šμ€λ‹€λ©΄ μžμ‹ ν΄λž˜μŠ€λŠ” 물렀받은 λ©”μ„œλ“œλ₯Ό μžμ‹ μ—κ²Œ λ§žλ„λ‘ μˆ˜μ •ν•  수 μžˆλŠ”λ°, 이λ₯Έ λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”©μ΄λΌκ³  ν•œλ‹€.(μ˜€λ²„λ‘œλ”© κ°œλ…κ³Ό λΉ„κ΅ν•΄μ„œ μ•Œμ•„λ‘κΈ°!!)

 

- κ·œμΉ™

  • λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œμ™€ λ™μΌν•œ μ‹œκ·Έλ‹ˆμ²˜λ₯΄ μ‚¬μš©ν•œλ‹€(심지어 λ°˜ν™˜ νƒ€μž…κΉŒμ§€ 동일해야 ν•œλ‹€)
  • λΆ€λͺ¨ 클래슀의 λ©”μ„œλ“œλ³΄λ‹€ μ ‘κ·Ό λ²”μœ„λ₯Ό 더 쒁게 μˆ˜μ •ν•  수 μ—†λ‹€
  • 좔가적인 μ˜ˆμ™Έκ°€ λ°œμƒν•  수 μžˆμŒμ„ λ‚˜νƒ€λ‚Ό 수 μ—†λ‹€

- μ˜€λ²„λΌμ΄λ”© λΆˆκ°€ ν•­λͺ©

  • private λ©”μ„œλ“œ : λΆ€λͺ¨ 클래슀 μ „μš©μ΄λ―€λ‘œ μžμ‹ ν΄λž˜μŠ€μ— μƒμ†λ˜μ§€ μ•ŠλŠ”λ‹€.
  • 정적 λ©”μ„œλ“œ : 클래슀 μ†Œμ†μ΄λ―€λ‘œ μžμ‹ ν΄λž˜μŠ€κ°€ μ˜€λ²„λΌμ΄λ”©ν•  수 μ—†λ‹€. 
  • final λ©”μ„œλ“œ : final λ©”μ„œλ“œλŠ” 더 이상 μˆ˜μ •λ  수 μ—†μœΌλ―€λ‘œ μžμ‹ ν΄λž˜μŠ€κ°€ μ˜€λ²„λΌμ΄λ”© ν•  수 μ—†λ‹€.

- λΆ€λͺ¨ 클래슀의 멀버 μ ‘κ·Ό

  • μžμ‹ ν΄λž˜μŠ€κ°€ λ©”μ„œλ“œλ₯Ό μ˜€λ²„λΌμ΄λ”©ν•˜λ©΄ μžμ‹ κ°μ²΄λŠ” λΆ€λͺ¨ 클래슀의 μ˜€λ²„λΌμ΄λ”©λœ λ©”μ„œλ“œλ₯Ό μˆ¨κΈ΄λ‹€
  • κ·Έ μˆ¨κ²¨μ§„ λ©”μ†Œλ“œλ₯Ό ν˜ΈμΆœν•΄μ•Ό ν•  λ•Œκ°€ μžˆλŠ”λ°, κ·Έλ•Œ super ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•œλ‹€.
  • superλŠ” ν˜„μž¬ κ°μ²΄μ—μ„œ λΆ€λͺ¨ 클래슀의 μ°Έμ‘°λ₯Ό 의미

상속은 νŒ¨ν‚€μ§€λ₯Ό λ”°λ‘œ λ§Œλ“€μ–΄ κ·Έμ•ˆμ— 각각의 ν΄λž˜μŠ€μ™€ main이 λ“€μ–΄κ°„ 클래슀λ₯Ό λ§Œλ“€μ–΄ μ£Όλ©΄ μˆ˜ν–‰ν•˜κΈ° 더 쉽닀!!

 

2-5) μ˜€λ²„λ‘œλ”©

- μ˜€λ²„λΌμ΄λ”©κ³Ό μƒλ‹Ήνžˆ μœ μ‚¬ν•˜λ©΄μ„œλ„ 큰 차이가 μžˆλ‹€. (μƒμ†κ³ΌλŠ” λ¬΄κ΄€ν•˜λ‹€)

- μ˜€λ²„λ‘œλ”©μ€ λ™μΌν•œ ν΄λž˜μŠ€μ— 이름은 κ°™μ§€λ§Œ μ‹œκ·Έλ‹ˆμ²˜κ°€ ν•˜λ‚˜λΌλ„ λ‹€λ₯Έ μ—¬λŸ¬ 개의 λ©”μ„œλ“œλ₯Ό μ€‘λ³΅ν•΄μ„œ μ •μ˜ν•˜λŠ” 것이닀.

 

비ꡐ μš”μ†Œ λ©”μ„œλ“œ μ˜€λ²„λΌμ΄λ”© λ©”μ„œλ“œ μ˜€λ²„λ‘œλ”©
λ©”μ„œλ“œ 이름 동일 동일
맀개 λ³€μˆ˜ 동일 λ‹€λ₯΄λ‹€
λ°˜ν™˜ νƒ€μž… 동일 관계없닀
상속 관계 ν•„μš” ν•„μš”μ—†λ‹€
μ˜ˆμ™Έμ™€ μ ‘κ·Ό λ²”μœ„ μ œμ•½μ΄ μžˆλ‹€ μ œμ•½μ΄ μ—†λ‹€
바인딩 ν˜ΈμΆœν•  λ©”μ„œλ“œλ₯Ό μ‹€ν–‰ 쀑 κ²°μ •ν•˜λŠ” 동적 바인딩이닀 ν˜ΈμΆœν•  λ©”μ„œλ“œλ₯Ό μ»€νŒŒμΌν•  λ•Œ κ²°μ •ν•˜λŠ” 정적 바인딩이닀

 

 

728x90
λ°˜μ‘ν˜•
728x90
λ°˜μ‘ν˜•

1) λ°°μ—΄ μ‘μš© - 메인 λ©”μ„œλ“œμ˜ λ§€κ°œλ³€μˆ˜ 전달(λͺ…λ Ήμ°½μ—μ„œμ˜ μ‹€ν–‰ λͺ…λ Ή)

 

더보기

package sec03;

public class MainArgumentDemo {
                  public static void main(String[] args) {
                                  if (args.length == 2) {
                                                   int i = Integer.parseInt(args[1]);
                                                   nPrintln(args[0], i);
                                   } else
                                                   System.out.println("어이쿠!");
                    }

                     public static void nPrintln(String s, int n) {
                                     for (int i = 0; i < n; i++)
                                                     System.out.println(s);
                     }
}

μ›λž˜λŠ” 어이쿠!κ°€ λ‚˜μ™”λŠ”λ°, μ•ˆλ…•! μ•ˆλ…•! μ•ˆλ…•! 이 λ‚˜μ˜€κΈ° μœ„ν•΄μ„œ λ³€κ²½ν•΄μ€˜μ•Ό ν•˜λŠ” 뢀뢄이 μžˆλ‹€.

λ‹€μŒμ˜ 과정을 ν•΄μ€˜μ•Όν•˜λŠ”λ°,

 

1. [Run] -> [Run Configurations] 을 선택 ν•œ ν›„

2. [Arguments]λ₯Ό ν΄λ¦­ν•˜κ³ 

3. [Program arguments]에 μ•ˆλ…•! 3μ΄λΌλŠ” 인수λ₯Ό μž…λ ₯ν•˜μ—¬μ•Ό ν•œλ‹€ 

**λ›°μ–΄μ“°κΈ° μ˜¬λ°”λ₯΄μ§€ μ•ŠμœΌλ©΄ μ‹€ν–‰κ²°κ³Όκ°€ λ°”λ€Œμ§€ μ•ŠμœΌλ―€λ‘œ μ •ν™•νžˆ μž…λ ₯ν•΄μ•Όν•œλ‹€~~ 

 

< μ΅œμ’…κ²°κ³Ό >

 

2) κ°€λ³€ 개수 인수 

 

- JDK 5λΆ€ν„°λŠ” λ©”μ„œλ“œμ—λ„ 데이터 νƒ€μž…μ΄ 같은 κ°€λ³€ 개수(variable length)의 인수λ₯Ό 전달 κ°€λŠ₯

 ex) 데이터 νƒ€μž… ...(κ°€λ³€ 개수 데이터 νƒ€μž…μ„ λ‚˜νƒ€λ‚Έλ‹€) λ³€μˆ˜

- ν•œ 개의 κ°€λ³€ 개수 λ§€κ°œλ³€μˆ˜λ§Œ μ‚¬μš© κ°€λŠ₯ν•˜λ©° κ°€λ³€ 개수 λ§€κ°œλ³€μˆ˜λŠ” λ§ˆμ§€λ§‰μ— μœ„μΉ˜

- κ°€λ³€ 개수 인수λ₯Ό 가진 λ©”μ„œλ“œλ₯Ό ν˜ΈμΆœν•˜λ©΄ λ‚΄λΆ€μ μœΌλ‘œ 배열을 μƒμ„±ν•˜μ—¬ 처리

 

더보기

package sec03;

public class VarArgsDemo {
                     public static void main(String[] args) {
                                        printSum(1, 2, 3, 4, 5);
                                        printSum(10, 20, 30);

                      }

                       public static void printSum(int... v) {
                                      int sum = 0;
                                      for (int i : v)
                                                      sum += i;
                                      System.out.println(sum);
                        }
}

< μ΅œμ’… κ²°κ³Ό >

=> μ΄ˆκΈ°κ°’μ΄ μ—†μœΌλ©΄ λ°”λ‘œ λ©”μΈμœΌλ‘œ λ„˜μ–΄κ°„λ‹€. for문을 ν†΅ν•΄μ„œ i의 값을 ν•©ν•΄μ„œ μ €μž₯ν•˜λ―€λ‘œ 닡은 15, 60

 

3) 객체의 λ°°μ—΄

 

- 객체 배열은 객체λ₯Ό μ°Έμ‘°ν•˜λŠ” μ£Όμ†Œλ₯Ό μ›μ†Œλ‘œ ꡬ성

ex) Ball 클래슀의 객체둜 κ΅¬μ„±λœ 배열을 μ„ μ–Έν•˜κ³  μ΄ˆκΈ°ν™”

      Ball [ ] balls = new Ball[5]; => 5개의 Ball 객체λ₯Ό μ°Έμ‘°ν•  λ³€μˆ˜λ₯Ό μ€€λΉ„  

- μƒμ„±μžλ₯Ό ν˜ΈμΆœν•˜μ—¬ Ball 객체λ₯Ό 생성해야 함

 

4) μ—΄κ±° νƒ€μž…

4-1) ν•„μš”μ„±

 

- μ œν•œλœ 수의 μΌμ΄λ‚˜ 사건 등에 λŒ€ν•˜μ—¬ 숫자둜 ν‘œν˜„

  • 각 μˆ«μžμ— λŒ€ν•˜μ—¬ λΆ€μ—¬λœ 의미λ₯Ό κ°œλ°œμžκ°€ μˆ™μ§€ => μΌμ΄λ‚˜ 사건에 λŒ€ν•œ 경우의 μˆ˜κ°€ λ§Žλ‹€λ©΄ 개발자 κ΄€μ μ—μ„œ 뢈편
  • λΆ€μ—¬λ˜μ§€ μ•Šμ€ 의미 μ—†λŠ” 숫자 => μ»΄νŒŒμΌλŸ¬λŠ” μ•Œ 수 μ—†λ‹€.
  • 좜λ ₯ 값이 의미 μ—†λŠ” 숫자둜 ν‘œν˜„

- μ œν•œλœ 사건에 λŒ€ν•˜μ—¬ 숫자 λŒ€μ‹ μ— μƒμˆ˜λ₯Ό μ •μ˜ν•΄μ„œ λΆ€μ—¬ : μˆ«μžμ— λΆ€μ—¬λœ 의미λ₯Ό κ°œλ°œμžκ°€ μ•Œ 수 μžˆμ§€λ§Œ, μ—¬μ „νžˆ λ‚˜λ¨Έμ§€ λ¬Έμ œκ°€ λ―Έκ²°

- μžλ°” 5λΆ€ν„° μ—΄κ±° νƒ€μž…μ„ 제곡

ex)

package sec04;

public class ConstantDemo {
    public static void main(String[] args) {
        final int MALE = 0;
        final int FEMALE = 1;
        final int SOUTH = 1;
        int gender = FEMALE;
        if (gender == MALE)
            System.out.println(MALE + "은(λŠ”) λ³‘μ—­ μ˜λ¬΄κ°€ μžˆλ‹€.");
        else
            System.out.println(FEMALE + "은(λŠ”) λ³‘μ—­ μ˜λ¬΄κ°€ μ—†λ‹€.");

        if (gender == SOUTH)
            System.out.println(SOUTH + "은(λŠ”) λˆ„ꡬ?");
        gender = 5;
    }
}

< μ΅œμ’… κ²°κ³Ό >

μ—¬κΈ°μ„œ 1은 남성 ν˜Ήμ€ 여성을 μ˜λ―Έν•˜λŠ” 단어가 μ•„λ‹ˆλΌ μˆ«μžκ°€ 좜λ ₯됨

4-2) μ—΄κ±° νƒ€μž…κ³Ό μ‘μš©

 

- μ—΄κ±° νƒ€μž… : μ„œλ‘œ μ—°κ΄€λœ 사건듀을 λͺ¨μ•„ μƒμˆ˜λ‘œ μ •μ˜ν•œ java.lang.Enum 클래슀의 μžμ‹ 클래슀

- μ„ μ–Έ : enum μ—΄κ±°νƒ€μž…μ΄λ¦„ { μƒμˆ˜λͺ©λ‘ }

ex) enum Gender {MALE, FEMALE} - enum :μ—΄κ±° νƒ€μž…μ„ μ •μ˜ν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ / Gender : μ—΄κ±° νƒ€μž… 이름 /

      MALE, FEMALE : μƒμˆ˜ λͺ©λ‘

-  μΌμ’…μ˜ 클래슀 νƒ€μž…μΈ μ—΄κ±° νƒ€μž…λ„ μƒμ„±μž, ν•„λ“œ 및 λ©”μ„œλ“œλ₯Ό κ°€μ§ˆ 수 μžˆλ‹€.

- μ—΄κ±° νƒ€μž… μƒμˆ˜λŠ” μƒμ„±μžμ— μ˜ν•œ μΈμŠ€ν„΄μŠ€μ΄λ‹€.- μ΄λ•Œ μƒμ„±μž, ν•„λ“œ 및 λ©”μ„œλ“œμ™€ μ—΄κ±° νƒ€μž… μƒμˆ˜λ₯Ό κ΅¬λΆ„ν•˜κΈ° μœ„ν•΄μ„œ 뒀에 λ°˜λ“œμ‹œ (;) λ₯Ό μΆ”κ°€ν•΄μ•Όν•œλ‹€.

 

++ 특수문자 μ›μ£Όμœ¨ μ“°λŠ” 법

 

[γ…Ž]을 λˆ„λ₯Έ ν›„ ν•œμžλ₯Ό λˆ„λ₯΄λ©΄ νŠΉμˆ˜λ¬Έμžν‘œκ°€ λ‚˜μ˜€λŠ”λ° μ£Όλ₯΄λ₯΅ 내리면 <<<<  π >>>>> κ°€ μžˆμŠ΅λ‹ˆλ‹€ !!!

3.14둜 적어도 λ˜κ² μ§€λ§Œ 파이 기호둜 써야할 일도 μžˆμœΌλ‹ˆκΉŒ μ°Έκ³ ν•˜μ„Έμ—¬~~ 

728x90
λ°˜μ‘ν˜•
728x90
λ°˜μ‘ν˜•

μ˜€λŠ˜μ€ 1κ΅μ‹œλΆ€ν„° κ°‘μžκΈ° μͺ½μ§€ μ‹œν—˜ μ•„λ‹Œ μͺ½μ§€ μ‹œν—˜μ„ μ³€λŠ”λ°..

ꡬ글링을 ν•˜κ±°λ‚˜ μ±— 지피티λ₯Ό ν•˜κ±°λ‚˜ 뭐든 μ‚¬μš©ν•΄μ„œ κ΅μˆ˜λ‹˜μ΄ λ‚΄μ£Όμ‹  예제 문제 5가지λ₯Ό ν‘ΈλŠ” κ±°μ˜€μŠ΅λ‹ˆλ‹€.

파이썬, μžλ°” 뭐든 μ‚¬μš©ν•΄λ„ μ’‹λ‹€κ³  ν•΄μ„œ 쑰금 더 μ•„λŠ” μžλ°”λ₯Ό μ„ νƒν•˜κ³  ꡬ글링과 μ €μ˜ 쑰그만 μ§€μ‹μœΌλ‘œ ν•΄κ²°ν•΄λ³΄μ•˜μŠ΅λ‹ˆλ‹€.

더보기

  μ˜ˆμ œλŠ” μ•„λž˜μ™€ κ°™μŠ΅λ‹ˆλ‹€. πŸ’₯πŸ’₯πŸ’₯πŸ’₯πŸ’₯

1. 1~10κΉŒμ§€μ˜ 숫자 λ”ν•΄μ„œ 좜λ ₯ν•˜κΈ°

2. 1~100κΉŒμ§€μ˜ 숫자 쀑 짝수만 좜λ ₯ν•˜κΈ°

3. 랜덀 숫자 쀑에 κ³¨λΌμ„œ μ†Œμˆ˜μ˜ 갯수λ₯Ό μΉ΄μš΄νŠΈν•˜κΈ°

4. 랜덀 숫자 μž…λ ₯ν•˜μ—¬ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ„ μž‘μ„±ν•˜κΈ°

5. 10μ§„μˆ˜λ₯Ό λ„£μ—ˆμ„ λ•Œ 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜κ³ , 우츑 μ‰¬ν”„νŠΈ 1번 ν•˜κΈ°

1) 1~10κΉŒμ§€μ˜ 숫자 λ”ν•΄μ„œ 좜λ ₯ν•˜κΈ° 

   

public class exam {

      public static void main(String[] args) {

             int i = 1;

              // 합계λ₯Ό 담을 λ³€μˆ˜

              int sum = 0;

              while (i <= 10) {

                     // 합계 λ³€μˆ˜μ— iλ₯Ό λˆ„μ μ‹œν‚¨λ‹€.

                     sum = sum + i;

                      // sum +=i;λ‘œλ„ μ“Έ 수 μžˆλ‹€.

                      i++;

               }

               System.out.println("1λΆ€ν„° 10κΉŒμ§€μ˜ 합은 " + sum + "μž…λ‹ˆλ‹€.");

        }

}

=> while λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ 1λΆ€ν„° 10κΉŒμ§€μ˜ 수λ₯Ό λ°˜λ³΅ν•˜μ—¬ μ‹€ν–‰ν•˜κ³  sum λ³€μˆ˜μ— 이λ₯Ό λ”ν•˜μ—¬ 합계λ₯Ό 좜λ ₯ν•˜μ˜€λ‹€.

1λΆ€ν„° 10κΉŒμ§€μ˜ 합은 55μž…λ‹ˆλ‹€.

 

2) 1~100κΉŒμ§€μ˜ 숫자 쀑 짝수만 좜λ ₯ν•˜κΈ°

 

public class exam2 {

       public static void main(String[] args) {

              int i = 0;

               // 100κΉŒμ§€ μ΄λ―€λ‘œ i<=100κΉŒμ§€λ‘œ μ„€μ •

               // 짝수만 좜λ ₯되게 ν•΄μ•Όν•˜λ―€λ‘œ i=i+2둜 2μ”© 증가

                for (i = 2; i <= 100; i = i + 2) {

                      // ν™”λ©΄ 좜λ ₯λΆ€

                       if (i <= 100)

                          System.out.println(i + " ");

                }

        }

}

=> for λ°˜λ³΅λ¬Έμ„ μ‚¬μš©ν•˜μ—¬ 100κΉŒμ§€μ˜ 숫자 쀑에 짝수의 값을 λ°˜λ³΅ν•˜μ—¬ μ‹€ν–‰ν•˜κ³  κ·ΈλŒ€λ‘œ 좜λ ₯ν•˜μ˜€λ‹€.

printλ₯Ό μ‚¬μš©ν•˜λ©΄ ν•œμ€„μ— λ‹€ ν‘œν˜„ν•΄μ£Όκ³ , println을 μ‚¬μš©ν•˜λ©΄ ν•œμ€„μ— ν•˜λ‚˜μ”©λ§Œ 좜λ ₯ν•œλ‹€.

2

4

6

8

...

 

3) 랜덀 숫자 쀑에 κ³¨λΌμ„œ μ†Œμˆ˜μ˜ 갯수λ₯Ό μΉ΄μš΄νŠΈν•˜κΈ°

import java.util.Scanner;

public class exan3_2 {

       public static void main(String[] args) {

               System.out.println("μž…λ ₯된 μˆ«μžκΉŒμ§€μ˜ μ†Œμˆ˜ κ΅¬ν•˜κΈ°");

               System.out.print("μž…λ ₯ : ");

                int inNum = 0;

                Scanner scan = new Scanner(System.in);

                inNum = scan.nextInt();

                // μ†Œμˆ˜ 개수 μ €μž₯ν•  λ³€μˆ˜ μ΄ˆκΈ°ν™”

                int count = 0;

                // ------------------------------

                // μž…λ ₯된 μˆ«μžκΉŒμ§€μ˜ μ†Œμˆ˜ κ΅¬ν•˜κΈ°

                // ------------------------------

                 for (int i = 2; i <= inNum; ++i) {

                      for (int j = 2; j <= i; ++j) { // jκ°€ iκΉŒμ§€ λ°˜λ³΅λ˜λ„λ‘ μˆ˜μ •

                           if (i % j == 0) {

                               if (i == j) {

                                  System.out.print(i + " "); // κ°œν–‰μ΄ μ•„λ‹Œ 곡백으둜 μˆ˜μ •

                                   count++; // μ†Œμˆ˜λ₯Ό μ°Ύμ•˜μœΌλ―€λ‘œ count 증가

                               } else {

                                    break;

                               }

                            }

                        }

                      }

                      System.out.printf("\n1λΆ€ν„° %dκΉŒμ§€μ˜ μ†Œμˆ˜ κ°œμˆ˜λŠ” %d개 μž…λ‹ˆλ‹€.", inNum, count); 

         }

}

=> μž…λ ₯ν•˜κ²Œ λ§Œλ“€κΈ° μœ„ν•΄μ„œ Scanner 생성, 2이상뢀터 μ†Œμˆ˜μ΄λ―€λ‘œ μ΄ˆκΈ°κ°’μ€ 2!! for λ°˜λ³΅λ¬Έμ„ ν†΅ν•˜μ—¬ μˆ«μžλŠ” inNumκ³Ό count에 μ €μž₯, μ²˜μŒμ—λŠ” μž…λ ₯ν•œ μˆ«μžμ— λŒ€ν•œ μ†Œμˆ˜μ˜ 인수λ₯Ό κ΅¬ν•˜λŠ”κ²ƒμΈ 쀄 μ•Œμ•˜λŠ”λ° μ†Œμˆ˜μ˜ 개수λ₯Ό κ΅¬ν•˜λŠ” κ²ƒμ΄μ—ˆλ‹€.

μž…λ ₯된 μˆ«μžκΉŒμ§€μ˜ μ†Œμˆ˜ κ΅¬ν•˜κΈ°

μž…λ ₯ : 45

2 3 5 7 11 13 17 19 23 29 31 37 41 43

1λΆ€ν„° 45κΉŒμ§€μ˜ μ†Œμˆ˜ κ°œμˆ˜λŠ” 14개 μž…λ‹ˆλ‹€.

4) 랜덀 숫자 μž…λ ₯ν•˜μ—¬ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ„ μž‘μ„±ν•˜κΈ°

 

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Scanner;

public class exam4 {

        public static void main(String[] args) {
               Scanner scan = new Scanner(System.in);
                ArrayList<Integer> Fibonacci = new ArrayList<>(Arrays.asList(0, 1));

                int inputData, m, n, i = 0;

                while (true) {
                      System.out.println("μ–‘μ˜ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€:");
                      inputData = scan.nextInt();

                      if (inputData > 0) {
                          break;
                       } else {
                             System.out.println("잘λͺ»λœ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ…¨μŠ΅λ‹ˆλ‹€. λ‹€μ‹œ μž…λ ₯ν•˜μ„Έμš”.\n");
                       }
                }
                while (true) {
                      m = Fibonacci.get(i);
                      n = Fibonacci.get(i + 1);

                      if (m + n > inputData) {
                          break;
                      } else {
                           Fibonacci.add(m + n);
                            i++;
                      }
             }

            System.out.println(String.format("%d κΉŒμ§€μ˜ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.\n", inputData) + Fibonacci);
      }
}

 

=> 피보 λ‚˜μΉ˜ μˆ˜μ—΄μ€ μ•žμ˜ 두값을 λ”ν•΄μ„œ λ‚˜μ˜¨ 값이 λ‹€μŒ 값이 λ˜λŠ” μˆ˜μ—΄μ΄λ‹€.  

μ–‘μ˜ μ •μˆ˜λ₯Ό μž…λ ₯ν•˜μ‹œμ˜€:

4

4 κΉŒμ§€μ˜ ν”Όλ³΄λ‚˜μΉ˜ μˆ˜μ—΄μ€ λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

[0, 1, 1, 2, 3]

5) 10μ§„μˆ˜λ₯Ό λ„£μ—ˆμ„ λ•Œ 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜κ³ , 우츑 μ‰¬ν”„νŠΈ 1번 ν•˜κΈ°

 

import java.util.Scanner;

public class exam5 {

        public static void main(String[] args) {

               Scanner scanner = new Scanner(System.in);

                // 10μ§„μˆ˜ μž…λ ₯ λ°›κΈ°

                System.out.print("10μ§„μˆ˜λ₯Ό μž…λ ₯ν•˜μ„Έμš”: ");

                int decimal = scanner.nextInt();

                 // 10μ§„μˆ˜λ₯Ό 2μ§„μˆ˜λ‘œ λ³€ν™˜ν•˜μ—¬ 좜λ ₯

                 System.out.printf("%d의 2μ§„μˆ˜ ν‘œν˜„: %s\n", decimal, Integer.toBinaryString(decimal));

                  // 우츑으둜 1번 μ‹œν”„νŠΈν•˜μ—¬ 좜λ ₯

                  int shifted = decimal >> 1;

                  System.out.printf("%d을 우츑으둜 1번 μ‹œν”„νŠΈν•œ κ²°κ³Ό: %d\n", decimal, shifted);

      }

}

=> 2μ§„μˆ˜λ‘œ ν‘œν˜„ν•˜κΈ° μœ„ν•΄ : 계속 λ‚˜λˆ„μ–΄μ€Œ - %2 / 우츑으둜 1번 μ‹œν”„νŠΈν•œ κ²°κ³Ό - int shifted = decimal >>1; 둜 ν‘œν˜„

728x90
λ°˜μ‘ν˜•
728x90
λ°˜μ‘ν˜•

였늘 μ •μ²˜κΈ° κ³΅λΆ€ν•˜λ‹€κ°€ μ•Œκ²Œλœ κ°œλ… λ¨Όμ € μ μ–΄λ³΄μžλ©΄...

 

1) 크둜슀 ν”Œλž«νΌ : νŠΉμ • μ†ŒμŠ€λ₯Ό ν”Œλž«νΌμ— 묢이지 μ•Šκ³  자유둭게 μ‚¬μš©ν•  수 μžˆλ„λ‘ μ„œν¬νŠΈ ν•˜λŠ” 역할을 ν•©λ‹ˆλ‹€.

ex) FlutterλŠ” 크둜슀 ν”Œλž«νΌμœΌλ‘œμ„œ Android, iOS 두 λͺ¨λ°”일 ν”Œλž«νΌμ—μ„œ λͺ¨λ‘ λ™μž‘ν•©λ‹ˆλ‹€.

μž₯μ μœΌλ‘œλŠ” λ™μΌν•œ μ½”λ“œλ‘œ μ„œλΉ„μŠ€λ₯Ό κ°œλ°œν•¨μœΌλ‘œμ„œ μœ μ§€ 보수 및 기느 개발 인λ ₯을 효율적으둜 ν™œμš© κ°€λŠ₯ν•œ κ²ƒπŸ‘ 이 μ‚¬μš©ν•˜λŠ” κ°€μž₯ 큰 μ΄μœ μ΄λ‹€.

 

2) DRM(디지털 μ €μž‘κΆŒ 관리) κ΅¬μ„±μš”μ†Œμ™€ 기술 μš”μ†Œ(μ •μ²˜κΈ° 자주 좜제된 문제)πŸ’₯πŸ’₯πŸ’₯

 

- 디지털 μ €μž‘κΆŒ κ΄€λ¦¬μ˜ 의미 : μ €μž‘κΆŒμžκ°€ λ°°ν¬ν•œ 디지털 μ½˜ν…μΈ κ°€ μ €μž‘κΆŒμžμ˜ μ˜λ„ν•œ μš©λ„λ‘œλ§Œ μ‚¬μš©λ˜λ„λ‘ 디지털 μ½˜ν…μΈ μ˜ 생성, μœ ν†΅, μ΄μš©κΉŒμ§€μ˜ μ „ 과정에 걸쳐 μ‚¬μš©λ˜λŠ” 디지털 μ½˜ν…μΈ  관리 및 보호 기술

 

- ꡬ성 μš”μ†Œ

  1. 클리어링 ν•˜μš°μŠ€(Clearing House) : μ €μž‘κΆŒμ— λŒ€ν•œ μ‚¬μš© κΆŒν•œ, λΌμ΄μ„ μŠ€ λ°œκΈ‰, μ‚¬μš©λŸ‰μ— λ”°λ₯Έ 관리 등을 μˆ˜ν–‰ν•˜λŠ” κ³³
  2. μ½˜ν…μΈ  제곡자(Contents Provider) : μ½˜ν…μΈ λ₯Ό μ œκ³΅ν•˜λŠ” μ €μž‘κΆŒμž
  3. νŒ¨ν‚€μ €(Packger) : μ½˜ν…μΈ λ₯Ό 메타 데이터와 ν•¨κ»˜ 배포 κ°€λŠ₯ν•œ ν˜•νƒœλ‘œ λ¬Άμ–΄ μ•”ν˜Έν™”ν•˜λŠ” ν”„λ‘œκ·Έλž¨
  4. μ½˜ν…μΈ  λΆ„λ°°μž(Contents Distributor) : μ•”ν˜Έν™”λœ μ½˜ν…μΈ λ₯Ό μœ ν†΅ν•˜λŠ” κ³³μ΄λ‚˜ μ‚¬λžŒ
  5. μ½˜ν…μΈ  μ†ŒλΉ„μž(Customer) : μ½˜ν…μΈ λ₯Ό κ΅¬λ§€ν•΄μ„œ μ‚¬μš©ν•˜λŠ” 주체
  6. DRM 컨트둀러(DRM Controller) : 배포된 μ½˜ν…μΈ μ˜ 이용 κΆŒν•œμ„ ν†΅μ œν•˜λŠ” ν”„λ‘œκ·Έλž¨
  7. λ³΄μ•ˆ μ»¨ν…Œμ΄λ„ˆ(Security Container) : μ½˜ν…μΈ  원본을 μ•ˆμ „ν•˜κ²Œ μœ ν†΅ν•˜κΈ° μœ„ν•œ μ „μžμ  λ³΄μ•ˆ μž₯치

- κΈ°μˆ μš”μ†Œ

  1. μ•”ν˜Έν™”(Encryption) : μ½˜ν…μΈ  및 λΌμ΄μ„ μŠ€λ₯Ό μ•”ν˜Έν™”ν•˜κ³  μ „μž μ„œλͺ…을 ν•  수 μžˆλŠ” 기술
  2. ν‚€ 관리(key Management) : μ½˜ν…μΈ λ₯Ό μ•”ν˜Έν™”ν•œ 킀에 λŒ€ν•œ μ €μž₯ 및 λΆ„λ°° 기술
  3. μ•”ν˜Έν™” 파일 생성(Pakager) : μ½˜ν…μΈ λ₯Ό μ•”ν˜Έν™”λœ μ½˜ν…μΈ λ‘œ μƒμ„±ν•˜κΈ° μœ„ν•œ 기술
  4. 식별 기술(identification) : μ½˜ν…μΈ μ— λŒ€ν•œ 식별 체계 ν‘œν˜„ 기술
  5. μ €μž‘κΆŒ ν‘œν˜„(Right Expression) : λΌμ΄μ„ μŠ€μ˜ λ‚΄μš© ν‘œν˜„ 기술
  6. μ •μ±… 관리(Policy Management) : λΌμ΄μ„ μŠ€ λ°œκΈ‰ 및 μ‚¬μš©μ— λŒ€ν•œ μ •μ±… ν‘œν˜„ 및 관리 기술
  7. ν¬λž™ 방지(Tamper Resistance) : ν¬λž™μ— μ˜ν•œ μ½˜ν…μΈ  μ‚¬μš© 방지 기술
  8. 인정(Authentication) : λΌμ΄μ„ μŠ€ λ°œκΈ‰ 및 μ‚¬μš©μ˜ 기쀀이 λ˜λŠ” μ‚¬μš©μž 인증 기술

λ‹€μŒμœΌλ‘œ μžλ°” 기초 κ°•μ˜λ“€μ€κ±Έ μš”μ•½ν•˜λ©΄...

 

1) 데이터 νƒ€μž… - λ°μ΄ν„°μ˜ 크기

 

μ»΄ν“¨νƒ€μ—μ„œ κ°€μž₯ μž‘μ€ λ‹¨μœ„ : bit (μ»΄ν“¨ν„°λŠ” 0κ³Ό 1둜 λ‚˜νƒ€λ‚Έλ‹€λŠ”) 

이 bitκ°€ 8개 λͺ¨μ΄λ©΄ 1 byteκ°€ λœλ‹€.  8bit = 1byte (μš°λ¦¬κ°€ μ‹€μƒν™œμ—μ„œ 이야기 ν•œλ‹€λ©΄ 10mmκ°€ 1cmκ°€ λœλ‹€λŠ” λŠλ‚ŒμœΌλ‘œ λ³Ό 수 μžˆλ‹€ //  데이터 νƒ€μž…μ—μ„œλŠ” 8bitκ°€ 1byte둜 λœλ‹€λŠ” 것과 κ·Έ μ΄ν›„λ‘œλŠ” 1024λ₯Ό κ³±ν•  λ•Œλ§ˆλ‹€ λ‹¨μœ„κ°€ λ°”λ€λ‹€λŠ” 것이 제일 μ€‘μš”)

8bit = 1 byte

1024 byte = 1 kilobyte

1024 kilobyte = 1 megabyte

1024 megabyte = 1 gigabyte

1024 gigabyte = 1 terabyte

1024 terabyte = 1 petabyte

1024 petabyte = 1 exabyte

1024 exabyte = 1 zetabyte

 

teratabyteκΉŒμ§€λŠ” μΌμƒμƒν™œμ—μ„œ 많이 μ“°μ§€λ§Œ  petabyte, exabyte, zetabyteλŠ” νŠΉμˆ˜ν•œ μ‚°μ—…μ—μ„œ μ‚¬μš©ν•˜λŠ” κ²½μš°κ°€ λ§Žλ‹€.

 

2) 데이터 νƒ€μž… - 데이터 νƒ€μž…μ˜ 비ꡐ

 

2-1) μ •μˆ˜ν˜• (μ •μˆ˜ν˜•μ„ μ‚¬μš©ν• λ•ŒλŠ” λ³΄ν†΅μ˜ 수λ₯Ό ν¬ν•¨ν•˜λŠ” intλ₯Ό μ‚¬μš©, μ²˜λ¦¬μ†λ„κ°€ 빠름)

데이터 νƒ€μž… λ©”λͺ¨λ¦¬μ˜ 크기 ν‘œν˜„ κ°€λŠ₯ λ²”μœ„
byte 1 byte -128 ~ 127
short 2 byte -32,768 ~ 32,767
int 4 byte -2,147,483,648 ~ 2,147,483,647
long 8 byte -9,273,372,036,854,775,808 ~ 9,223,372,036,854,775,807

- byteλŠ” 128의 값을 ν¬ν•¨ν•˜μ§€ μ•ŠμœΌλ―€λ‘œ 잘λͺ» μ‚¬μš©ν•˜μ—¬ 빨간쀄이 λ„μž„ => short, int, long으둜 λ°”κΎΈμ–΄ μ‚¬μš©ν•΄μ•Όν•¨

- 데이터가 같을 λ•ŒλŠ” λ˜‘κ°™μ€ λ©”λͺ¨λ¦¬μ˜ 양을 μ‚¬μš©ν•œλ‹€(λ“€μ–΄κ°„ 숫자의 ν¬κΈ°λŠ” λ‹€λ₯΄μ§€λ§Œ μ‹€μ§ˆμ μœΌλ‘œ μ‚¬μš©ν•˜κΈ° μœ„ν•΄ λΉ„μ›Œλ‘” μžλ¦¬λŠ” κ°™μœΌλ―€λ‘œ λ©”λͺ¨λ¦¬μ˜ 양은 동일 ν•˜λ‹€)

ex) long a = 2147483647

      long b = 1

 

- 같은 λ³€μˆ˜λ₯Ό μ €μž₯ν•˜κ³  μžˆλ”λΌλ„ λ°μ΄ν„°μ˜ νƒ€μž…μ΄ λ‹€λ₯΄λ©΄ μ‚¬μš©ν•˜λŠ” λ©”λͺ¨λ¦¬μ˜ 양이 λ‹€λ₯΄λ‹€(λ³€μˆ˜μ— λ“€μ–΄μžˆλŠ” μˆ«μžλŠ” κ°™μ§€λ§Œ longλŠ” 8byte이고 intλŠ” 4byteμ΄λ―€λ‘œ λ‘λ°°μ˜ 양을 μ‚¬μš©ν•œλ‹€)

ex) int a = 2147483647

      long b = 2147483647

 

2-2) μ‹€μˆ˜ν˜•(λŒ€λΆ€λΆ„ μ‹€μˆ˜ν˜•μ„ μ‚¬μš©ν•  λ•Œμ—λŠ” double을 μ‚¬μš©ν•œλ‹€)

float 4 byte
double 8 byte

2-3) 문자

char - 2 byte : λͺ¨λ“  μœ λ‹ˆμ½”λ“œ 문자

ex) "AB" : 2+2 : 4 byte

 

3) μƒμˆ˜μ˜ 데이터 νƒ€μž…

 

3-1) μƒμˆ˜μ˜ 의미

λ¨Όμ € λ³€μˆ˜λŠ” λ³€ν•˜λŠ” 값을 μ˜λ―Έν•˜κ³ , μƒμˆ˜λŠ” κ·Έ λŒ€μ²™μ μ— μžˆλŠ” κ²ƒμœΌλ‘œ λ³€ν•˜μ§€ μ•ŠλŠ” 값을 μ˜λ―Έν•œλ‹€.

 

ex) int a = 1;

=> λ³€μˆ˜ a λŠ” λŒ€μž… μ—°μ‚°μž(=)에 μ˜ν•΄μ„œ 1이 λ˜μ—ˆλ‹€. aλŠ” λ³€μˆ˜μ΄κ³  1은 μƒμˆ˜

 

ex2) 1 = 2;

=> 컴파일이 λ˜μ§€ μ•ŠλŠ”λ‹€. 1은 2κΈ° 될 수 μ—†μœΌλ―€λ‘œ... 1은 1이고 2λŠ” 2이닀. κ³ μœ ν•œ 값을 가지고 있고, κ·Έ 값을 λ³€κ²½ ν•  수 μ—†λŠ” 데이터 νƒ€μž…μ„ μƒμˆ˜λΌκ³  ν•œλ‹€.

 

3-2) μ‹€μˆ˜μ˜ ν‘œν˜„

 

μ•žμ—μ„œ λ³€μˆ˜λ₯Ό λ§Œλ“€ λ•Œ 데이터 νƒ€μž…μ„ μ§€μ •ν–ˆμ—ˆλŠ”λ°, 그것은 λ³€μˆ˜κ°€ λ©”λͺ¨λ¦¬λ₯Ό μ–Όλ§ˆλ‚˜ μ‚¬μš©ν•  것인가λ₯Ό μ§€μ •ν•˜λŠ” 의미λ₯Ό κ°–λŠ”λ°, μƒμˆ˜μ—λ„ 데이터 νƒ€μž…μ΄ μžˆμ–΄ μ½”λ“œμ˜ 였λ₯˜κ°€ λ°œμƒν•œλ‹€.

 

 μ˜€λ₯˜ λ°œμƒμ˜ μ˜ˆμ‹œ

ex) int a = 2.2; => 2.2λŠ” μ‹€μˆ˜μ΄λ―€λ‘œ μ •μˆ˜ νƒ€μž…μ˜ λ³€μˆ˜ a에 μ €μž₯ν•˜λ €κ³  ν–ˆκΈ° λ•Œλ¬Έμ— 였λ₯˜κ°€ λ°œμƒν–ˆλ‹€.(=μƒμˆ˜μ—λ„ 데이터 νƒ€μž…μ΄ μ‘΄μž¬ν•œλ‹€)

     float a = 2.2; μ—­μ‹œ μ—λŸ¬κ°€ λ‚˜μ˜€κ³  float a = 2.2F; ν˜Ήμ€ double a = 2.2;λ₯Ό μ‚¬μš©ν•˜μ—¬μ•Ό ν•œλ‹€.

μ •ν™•νžˆ μ΄ν•΄ν•˜μ§€λŠ” λͺ»ν–ˆμ§€λ§Œ μ‹€μˆ˜μ˜ λΆ€λΆ„μ—μ„œλŠ” double을 μ‚¬μš©ν•˜λΌλŠ” 걸둜..

      

 

728x90
λ°˜μ‘ν˜•
728x90
λ°˜μ‘ν˜•

1. 객체지ν–₯ ?

- κ°œλ… : μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν˜„μ‹€ μ„Έκ³„μ˜ 객체λ₯Ό ν•„λ“œμ™€ λ©”μ„œλ“œλ‘œ λͺ¨λΈλ§ν•œ 것

μ†Œν”„νŠΈμ›¨μ–΄ κ°μ²΄λŠ” ν•„λ“œ(Field)둜 μ •μ˜ν•˜κ³ , λ™μž‘μ€ λ©”μ„œλ“œ(Method)둜 μ •μ˜

ν•„λ“œλŠ” 객체 내뢄에 μ„ μ–Έλœ λ³€μˆ˜λ₯Ό μ˜λ―Έν•˜κ³ , λ©”μ„œλ“œλŠ” 객체 내뢀에 μ •μ˜λœ λ™μž‘

 

- ν”„λ‘œκ·Έλž˜λ° : μ†Œν”„νŠΈμ›¨μ–΄μ˜ 규λͺ¨κ°€ μ»€μ§€λ©΄μ„œ λ™μž‘κ³Ό λΆ„λ¦¬λ˜μ–΄ μ „ κ³Όμ •μ—μ„œ μ„œλ‘œ λ³΅μž‘ν•˜κ²Œ μ–½ν˜€ μžˆλŠ” 데이터λ₯Ό μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ— 절파 지ν–₯ ν”„λ‘œκ·Έλž˜λ° λ°©μ‹μ˜ ν•œκ³„λ‘œ 생성

절차 지ν–₯ ν”„λ‘œκ·Έλž¨μ€ μΆ”ν›„ λ³€κ²½ν•˜κ±°λ‚˜ ν™•μž₯ν•˜κΈ°λ„ 어렀움

ν˜„μ‹€μ„Έκ³„λ₯Ό 객체 λ‹¨μœ„λ‘œ ν”„λ‘œκ·Έλž˜λ°ν•˜λ©°, κ°μ²΄λŠ” ν•„λ“œμ™€ λ©”μ„œλ“œλ₯΄ ν•˜λ‚˜λ‘œ λ¬Άμ–΄ ν‘œν˜„

 

- νŠΉμ§•(μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ λ¬Έμ œλ‘œλ„ 자주 좜제됨!!)

1. μΊ‘μŠν™”(정보은닉) : κ΄€λ ¨λœ ν•„λ“œμ™€ λ©”μ„œλ“œλ₯Ό ν•˜λ‚˜μ˜ 캑슐처럼 포μž₯ν•΄ μ„ΈλΆ€ λ‚΄μš©μ„ μ™ΈλΆ€μ—μ„œ μ•Œ 수 없도둝 κ°μΆ”λŠ” 것

2. 상속 : μžλ…€κ°€ λΆ€λͺ¨ μž¬μ‚°μ„ 상속받아 μ‚¬μš©ν•˜λ“―μ΄ μƒμœ„ 객체λ₯Ό 상속받은 ν•˜μœ„ 객체가 μƒμœ„ 객체의 λ©”μ„œλ“œμ™€ ν•„λ“œλ₯Ό μ‚¬μš©ν•˜λŠ” 것

3. λ‹€ν˜•μ„± : λŒ€μž…λ˜λŠ” 객체에 λ”°λΌμ„œ λ©”μ„œλ“œλ₯Ό λ‹€λ₯΄κ²Œ λ™μž‘ν•˜λ„λ‘ κ΅¬ν˜„ν•˜λŠ” 기술, μ‹€ν–‰ 도쀑 λ™μΌν•œ μ΄λ¦„μ˜ λ‹€μ–‘ν•œ κ΅¬ν˜„μ²΄ μ€‘μ—μ„œ λ©”μ„œλ“œλ₯Ό 선택 κ°€λŠ₯(λ‹€μ–‘μ„±κ³ΌλŠ” 닀름)

4. 좔상화 : ν˜„μ‹€ μ„Έκ³„μ˜ κ°μ²΄μ—μ„œ λΆˆν•„μš”ν•œ 속성을 μ œκ±°ν•˜κ³  μ€‘μš”ν•œ μ •λ³΄λ§Œ 클래슀둜 ν‘œν˜„ν•˜λŠ” μΌμ’…μ˜ λͺ¨λΈλ§ 기법

 

더보기

- 클래슀 μ„ μ–Έ

class 클래슀 이름 {       => 클래슀λ₯Ό μ„ μ–Έν•˜κΈ° μœ„ν•œ ν‚€μ›Œλ“œ

  // ν•„λ“œ                         => 객체의 속성을 λ‚˜νƒ€λ‚Έλ‹€

  // λ©”μ„œλ“œ                     => 객체의 λ™μž‘μ„ λ‚˜νƒ€λ‚Έλ‹€

 

ex)

public class Ball {

   double radius = 2.0;

   double getVolume() {

      return 4 / 3 * 3.14 * radius * radius * radius;

    }

}

 

public : 클래슀 μ ‘κ·Ό κΆŒν•œμœΌλ‘œ λˆ„κ΅¬λ‚˜ μ‚¬μš©ν•  수 μžˆλ‹€

class : 클래슀 ν‚€μ›Œλ“œ

Ball : 클래슀 μ΄λ¦„μœΌλ‘œ μ†ŒμŠ€ 파일 이름과 동일해야 ν•œλ‹€

double radius = 2.0;  : ν•„λ“œ

return 4 / 3 * 3.14 *radius * radius * radius;  =>  λ©”μ„œλ“œ : () κ°€ λ“€μ–΄κ°€λ©΄ λ©”μ„œλ“œλΌκ³  μƒκ°ν•˜κΈ°

- 객체 생성과 μ°Έμ‘° λ³€μˆ˜

- ν•œ λ¬Έμž₯으둜 λ³€μˆ˜ μ„ μ–Έκ³Ό 객체 생성

 ν΄λž˜μŠ€ 이름 λ³€μˆ˜ = new 클래슀 이름();

  • μƒμ„±μž 이름은 클래슀 이름과 κ°™λ‹€
  • μƒμ„±μžμ˜ λ°˜ν™˜ νƒ€μž…μ€ μ—†λ‹€
  • μƒμ„±μžλŠ” new μ—°μ‚°μžμ™€ ν•¨κ»˜ μ‚¬μš©ν•˜λ©°, 객체λ₯Ό 생성할 λ•Œ ν˜ΈμΆœν•œλ‹€
  • μƒμ„±μžλŠ” μ˜€λ²„λ‘œλ”© ν•  수 μžˆλ‹€.(μ˜€λ²„λ‘œλ”©(Overloading) : 같은 μ΄λ¦„μ˜ λ©”μ„œλ“œ μ—¬λŸ¬κ°œλ₯Ό κ°€μ§€λ©΄μ„œ λ§€κ°œλ³€μˆ˜μ˜ μœ ν˜•κ³Ό κ°œμˆ˜κ°€ λ‹€λ₯΄λ„둝 ν•˜λŠ” 기술)

 

- 클래슀 μ„ μ–Έκ³Ό 객체 생성 μ˜ˆμ‹œ 문제 (기초 νƒ€μž…κ³Ό μ°Έμ‘°νƒ€μž…)

package java0316;

public class PhoneDemo {

    public static void main(String[] args) {

       Phone myPhone = new Phone();

       myPhone.model = "κ°€λŸ­μ‹œ S8";

       myPhone.value = 100;

       myPhone.print();

       Phone yourPhone = new Phone();

       yourPhone.model = "G6";

        yourPhone.value = 85;

        yourPhone.print();

     }

}

class Phone {

     String model;

     int value;

     void print() {

            System.out.println(value + "λ§Œμ› 짜리" + model + "슀마트폰");

     }

}

κ²°κ³ΌλŠ” μ΄λ ‡μŠ΅λ‹ˆλ‹€!!

100λ§Œμ› μ§œλ¦¬κ°€λŸ­μ‹œ S8슀마트폰

85λ§Œμ› 짜리G6슀마트폰

- ν•„λ“œμ™€ 지역 λ³€μˆ˜μ˜ 차이 : ν•„λ“œλŠ” κΈ°λ³Έ 값이 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” κΈ°λ³Έ 값이 μ—†μ–΄ λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”(기본값이 0)

ν•„λ“œλŠ” 클래슀 μ „μ²΄μ—μ„œ μ‚¬μš©ν•  수 μžˆμ§€λ§Œ, 지역 λ³€μˆ˜λŠ” μ„ μ–Έλœ 블둝 λ‚΄λΆ€μ˜ μ„ μ–Έλœ ν›„μ—μ„œλ§Œ μ‚¬μš© κ°€λŠ₯

ν•„λ“œμ™€ 달리 지역 λ³€μˆ˜λŠ” final둜만 지정 κ°€λŠ₯ (λ°°μ—΄μ—μ„œλ§Œ null값을 가짐)

 

- μ ‘κ·Όμžμ™€ μ„€μ •μž

ν•„μš”μ„± : 클래슀 내뢀에 μΊ‘μŠν™”λœ 멀버λ₯Ό μ™ΈλΆ€μ—μ„œ μ‚¬μš©ν•  ν•„μš”

μ ‘κ·Όμžμ™€ μ„€μ •μž

private으둜 μ§€μ •λœ ν•„λ“œμ— 값을 λ°˜ν™˜ν•˜λŠ” μ ‘κ·Όμžμ™€ 값을 λ³€κ²½ν•˜λŠ” μ„€μ •μžλŠ” 곡개된 λ©”μ„œλ“œ

일반적으둜 μ ‘κ·ΌμžλŠ” get, μ„€μ •μžλŠ” set으둜 μ‹œμž‘ν•˜λŠ” 이름을 μ‚¬μš©

ν•„λ“œ 이름을 외뢀와 μ°¨λ‹¨ν•΄μ„œ λ…λ¦½μ‹œν‚€κΈ° λ•Œλ¬Έμ— ν•„λ“œ 이름 λ³€κ²½μ΄λ‚˜ 데이터 검증도 κ°€λŠ₯

package java0316;

public class CircleDemo2 {

        public static void main(String[] args) {

                Circle1 myCircle = new Circle1();

                myCircle.setRadius(10.0);

                myCircle.show(myCircle.getRadius(), myCircle.findArea());

         }

}

class Circle1 {

        private double radius;

        public double getRadius() {

               return radius;

        }

        public void setRadius(double r) {

               this.radius = r;

         }

         double findArea() {

              return 3.14 * radius * radius;

         }

         void show(double x, double y) {

               System.out.printf("λ°˜μ§€λ¦„ = %.1f, 넓이 = %.1f\n", x, y);

         }

}

κ²°κ³ΌλŠ” ) λ°˜μ§€λ¦„ = 10.0, 넓이 = 314.0

- λ””ν΄νŠΈ μƒμ„±μž

  • λͺ¨λ“  ν΄λž˜μŠ€λŠ” μ΅œμ†Œν•œ ν•˜λ‚˜μ˜ μƒμ„±μžκ°€ 있음
  • λ§Œμ•½ μƒμ„±μžλ₯Ό μ„ μ–Έν•˜μ§€ μ•ŠμœΌλ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μžλ™μœΌλ‘œ λ””ν΄νŠΈ μƒμ„±μžλ₯Ό μΆ”κ°€

 

728x90
λ°˜μ‘ν˜•

+ Recent posts