πŸ““ Do it! μžλ°” ν”„λ‘œκ·Έλž˜λ° μž…λ¬Έ

this μ˜ˆμ•½μ–΄

- μƒμ„±λœ μΈμŠ€ν„΄μŠ€ 슀슀둜λ₯Ό κ°€λ¦¬ν‚€λŠ” μ˜ˆμ•½μ–΄

- 클래슀의 μƒμ„±μžμ—μ„œ λ‹€λ₯Έ μƒμ„±μžλ₯Ό ν˜ΈμΆœν•  수 있음

- μƒμ„±λœ 클래슀 μžμ‹ μ˜ μ£Όμ†Œ 값을 λ°˜ν™˜ν•  수 있음

static λ³€μˆ˜

- static λ³€μˆ˜ = 정적 λ³€μˆ˜ = 클래슀 λ³€μˆ˜

- ν΄λž˜μŠ€μ—μ„œ κ³΅ν†΅μœΌλ‘œ μ‚¬μš©ν•˜λŠ” λ³€μˆ˜

- ν”„λ‘œκ·Έλž¨μ΄ μ‹€ν–‰λ˜μ–΄ λ©”λͺ¨λ¦¬μ— μ˜¬λΌκ°”μ„ λ•Œ λ”± ν•œ 번 λ©”λͺ¨λ¦¬ 곡간이 할당됨

- static으둜 μ„ μ–Έν•œ λ³€μˆ˜λŠ” μΈμŠ€ν„΄μŠ€ 생성과 상관없이 λ¨Όμ € μƒμ„±λ˜κ³  κ·Έ 값을 λͺ¨λ“  μΈμŠ€ν„΄μŠ€κ°€ κ³΅μœ ν•˜κ²Œ 됨

λ³€μˆ˜ 유효 λ²”μœ„

1. μ§€μ—­ λ³€μˆ˜(둜컬 λ³€μˆ˜)

- ν•¨μˆ˜ 내뢀에 μ„ μ–Έ

- ν•¨μˆ˜ λ‚΄λΆ€μ—μ„œλ§Œ μ‚¬μš©

- μŠ€νƒ λ©”λͺ¨λ¦¬

- ν•¨μˆ˜κ°€ 호좜될 λ•Œ μƒμ„±λ˜κ³  ν•¨μˆ˜κ°€ λλ‚˜λ©΄ μ†Œλ©Έν•¨

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

- 클래슀 멀버 λ³€μˆ˜λ‘œ μ„ μ–Έ

- 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜κ³  private이 μ•„λ‹ˆλ©΄ μ°Έμ‘° λ³€μˆ˜λ‘œ λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš© κ°€λŠ₯

- νž™ λ©”λͺ¨λ¦¬

- μΈμŠ€ν„΄μŠ€κ°€ 생성될 λ•Œ νž™μ— 생기고, κ°€λΉ„μ§€ 컬렉터가 λ©”λͺ¨λ¦¬λ₯Ό μˆ˜κ±°ν•  λ–„ μ†Œλ©Έλ¨

3. static λ³€μˆ˜(클래슀 λ³€μˆ˜)

- static μ˜ˆμ•½μ–΄λ₯Ό μ‚¬μš©ν•˜μ—¬ 클래슀 내뢀에 μ„ μ–Έ

- 클래슀 λ‚΄λΆ€μ—μ„œ μ‚¬μš©ν•˜κ³  private이 μ•„λ‹ˆλ©΄ 클래슀 μ΄λ¦„μœΌλ‘œ λ‹€λ₯Έ ν΄λž˜μŠ€μ—μ„œ μ‚¬μš© κ°€λŠ₯

- 데이터 μ˜μ—­

- ν”„λ‘œκ·Έλž¨μ΄ 처음 μ‹œμž‘ν•  λ•Œ μƒμˆ˜μ™€ ν•¨κ»˜ 데이터 μ˜μ—­μ— γ……μƒμ„±λ˜κ³  ν”„λ‘œκ·Έλž¨μ΄ λλ‚˜κ³  λ©”λͺ¨λ¦¬λ₯Ό 해체할 λ•Œ μ†Œλ©Έλ¨

λ°°μ—΄

1. λ°°μ—΄ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”- λ°°μ—΄: μžλ£Œκ°€ μ—°μ†μœΌλ‘œ λ‚˜μ—΄λœ 자료 ꡬ쑰- λ°°μ—΄ μš”μ†Œ: 배열을 μ΄λ£¨λŠ” 각각의 자료

μžλ£Œν˜•[] 배열이름 = new μžλ£Œν˜•[개수];
μžλ£Œν˜• 배열이름[] = new μžλ£Œν˜•[개수];

- 배열을 μ„ μ–Έν•˜λ©΄ 그와 λ™μ‹œμ— 각 μš”μ†Œμ˜ 값이 μ΄ˆκΈ°ν™”λ¨

- μžλ£Œν˜•μ— 따라 μ •μˆ˜λŠ” 0, μ‹€μˆ˜λŠ” 0.0, 객체 배열은 null

- λ°°μ—΄ μ„ μ–Έκ³Ό λ™μ‹œμ— νŠΉμ • κ°’μœΌλ‘œ μ΄ˆκΈ°ν™”ν•  μˆ˜λ„ 있음

//λ°°μ—΄ μ΄ˆκΈ°ν™”ν•˜κΈ°
int[] studentIDs = new int[] {101, 102, 103};   //κ°œμˆ˜λŠ” μƒλž΅ν•¨
int[] studentIDs = new int[3] {101, 102, 103;}  //였λ₯˜ λ°œμƒ
int[] studentIDs = {101, 102, 103};             //intν˜• μš”μ†Œκ°€ 3개인 λ°°μ—΄ 생성

//λ°°μ—΄μ˜ μžλ£Œν˜•μ„ λ¨Όμ € μ„ μ–Έν•˜κ³  μ΄ˆκΈ°ν™”ν•˜λŠ” κ²½μš°μ—λŠ” new int[]λ₯Ό μƒλž΅ν•  수 μ—†μŒ        
int[] studentIDs;                           //λ°°μ—΄ μžλ£Œν˜• μ„ μ–Έ
studentIDs = new int[] {101, 102, 103};     //new int[]λ₯Ό μƒλž΅ν•  수 μ—†μŒ

2. λ°°μ—΄ λ³΅μ‚¬ν•˜κΈ°

1) κΈ°μ‘΄ λ°°μ—΄κ³Ό λ°°μ—΄ 길이가 κ°™κ±°λ‚˜ 더 κΈ΄ 배열을 λ§Œλ“€κ³  for문을 μ‚¬μš©ν•˜μ—¬ 각 μš”μ†Œ 값을 λ°˜λ³΅ν•΄μ„œ λ³΅μ‚¬ν•˜λŠ” 방법

2) System.arraycopy() λ©”μ„œλ“œ μ‚¬μš©

- src: 볡사할 λ°°μ—΄ 이름

- srcPos: 볡사할 λ°°μ—΄μ˜ 첫 번째 μœ„μΉ˜

- dest: λ³΅μ‚¬ν•΄μ„œ λΆ™μ—¬ 넣을 λŒ€μƒ λ°°μ—΄ 이름

- destPos: λ³΅μ‚¬ν•΄μ„œ λŒ€μƒ 배열에 λΆ™μ—¬λ„£κΈ°λ₯Ό μ‹œμž‘ν•  첫 번째 μœ„μΉ˜

- length: srcμ—μ„œ dest둜 자료λ₯Ό 볡사할 μš”μ†Œ 개수

- 객체 λ°°μ—΄μ˜ μš”μ†Œμ— μ €μž₯된 값은 μΈμŠ€ν„΄μŠ€ μžμ²΄κ°€ μ•„λ‹ˆκ³  μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œ κ°’

- 객체 배열을 볡사할 λ•Œ μΈμŠ€ν„΄μŠ€λ₯Ό λ”°λ‘œ μƒμ„±ν•˜λŠ” 것이 μ•„λ‹ˆλΌ κΈ°μ‘΄ μΈμŠ€ν„΄μŠ€μ˜ μ£Όμ†Œ κ°’λ§Œ 볡사

- 두 λ°°μ—΄μ˜ μ„œλ‘œ λ‹€λ₯Έ μš”μ†Œκ°€ 같은 μΈμŠ€ν„΄μŠ€λ₯Ό 가리킀고 μžˆμœΌλ―€λ‘œ λ³΅μ‚¬λ˜λŠ” λ°°μ—΄μ˜ μΈμŠ€ν„΄μŠ€ 값이 λ³€κ²½λ˜λ©΄ 두 λ°°μ—΄ λͺ¨λ‘ 영ν–₯을 λ°›μŒ

 

3. κΉŠμ€ 볡사(deep copy)

- 얕은 볡사(shallow copy): μ£Όμ†Œ κ°’λ§Œ 볡사

- μΈμŠ€ν„΄μŠ€λ₯Ό λ”°λ‘œ κ΄€λ¦¬ν•˜κ³  μ‹Άλ‹€λ©΄ 직접 μΈμŠ€ν„΄μŠ€λ₯Ό λ§Œλ“€κ³  κ·Έ 값을 볡사해야 됨

 

4. ν–₯μƒλœ forλ¬Έ(enhanced for loop)

- μ²˜μŒμ—μ„œ λκΉŒμ§€ λͺ¨λ“  μš”μ†Œλ₯Ό μ°Έμ‘°ν•  λ•Œ μ‚¬μš©ν•˜λ©΄ 편리

- λ°°μ—΄ μš”μ†Œ 값을 μˆœμ„œλŒ€λ‘œ ν•˜λ‚˜μ”© κ°€μ Έμ™€μ„œ λ³€μˆ˜μ— λŒ€μž…

- λ”°λ‘œ μ΄ˆκΈ°ν™”μ™€ μ’…λ£Œ 쑰건이 μ—†κΈ° λ•Œλ¬Έμ— λͺ¨λ“  λ°°μ—΄μ˜ μ‹œμž‘ μš”μ†ŒλΆ€ν„° 끝 μš”μ†ŒκΉŒμ§€ μ‹€ν–‰

for(λ³€μˆ˜ : λ°°μ—΄){
     λ°˜λ³΅ μ‹€ν–‰λ¬Έ;
}

닀차원 λ°°μ—΄

- λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό μ°Έμ‘°ν•˜λ €λ©΄ 각 행을 κΈ°μ€€μœΌλ‘œ μ—΄ 값을 μˆœνšŒν•˜λ©΄ 됨

int [ ] [ ] arr = new int [2] [3];
int [ ] [ ] arr = {{1, 2, 3}, {4, 5, 6}};
public class TwoDimension{
    public static void main(String[] args){
        int [][] arr = {{1, 2, 3}, {4, 5, 6}};

        for (int i = 0; i < arr.length; i++) {
            for (int j = 0; j < arr[i].length; j++) {
                System.out.println(arr[i][j]);
            }
            System.out.println();
        }
    }
}

- 쀑첩 for문은 λ°°μ—΄ 인덱슀용으둜 i, j 두 λ³€μˆ˜λ₯Ό μ‚¬μš©. iλŠ” ν–‰, jλŠ” μ—΄.

- 전체 λ°°μ—΄ 길이인 arr.lengthλŠ” ν–‰μ˜ 개수λ₯Ό, 각 ν–‰μ˜ 길이 arr[i].lengthλŠ” μ—΄μ˜ 개수λ₯Ό λ‚˜νƒ€λƒ„

ArryList 클래슀

1. ArrayList 클래슀의 μ£Όμš” λ©”μ„œλ“œ

- boolean add(E e): μš”μ†Œ ν•˜λ‚˜λ₯Ό 배열에 μΆ”κ°€ν•©λ‹ˆλ‹€. EλŠ” μš”μ†Œμ˜ μžλ£Œν˜•μ„ μ˜λ―Έν•©λ‹ˆλ‹€.

- int size( ): 배열에 μΆ”κ°€λœ μš”μ†Œ 전채 개수λ₯Ό λ°˜ν™˜ ν•©λ‹ˆλ‹€.

- E get(int index): λ°°μ—΄μ˜ index μœ„μΉ˜μ— μžˆλŠ” μš”μ†Œ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

- E remove(int index): λ°°μ—΄μ˜ index μœ„μΉ˜μ— μžˆλŠ” μš”μ†Œ 값을 μ œκ±°ν•˜κ³  κ·Έ 값을 λ°˜ν™˜ν•©λ‹ˆλ‹€.

- boolean isEmpty( ): 배열이 λΉ„μ–΄ μžˆλŠ”μ§€ ν™•μΈν•©λ‹ˆλ‹€.

2. ArrayList 클래슀 ν™œμš©ν•˜κΈ°

ArrayList<E> 배열이름 = new ArrayList<E>( );

- 배열을 μ„ μ–Έν•˜λŠ” λΆ€λΆ„μ˜ < >μ•ˆμ— μ‚¬μš©ν•  객체의 μžλ£Œν˜•(E)λ₯Ό μ“°λ©΄ 됨

ArrayList<Book> library = new ArrayList<Book>();

- ArrayListλŠ” java.util νŒ¨ν‚€μ§€μ— κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” 클래슀이기 λ•Œλ¬Έμ— ArrayListλ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” μ»΄νŒŒμΌλŸ¬μ—κ²Œ ArrayListκ°€ 어디에 κ΅¬ν˜„λ˜μ–΄ μžˆλŠ”μ§€ μ•Œλ €μ€˜μ•Ό 함

- ArrayListλ₯Ό μ‚¬μš©ν•˜λ €λ©΄ μžλ°” 클래슀λ₯Ό μ„ μ–Έν•˜κΈ° 전에 import java.util.ArrayList; λ¬Έμž₯을 λ°˜λ“œμ‹œ μ¨μ€˜μ•Ό 함

- μž„ν¬νŠΈ(import): λ‚΄ μ½”λ“œμ— μ—†λŠ” 클래슀λ₯Ό 가져와 μ‚¬μš©ν•  λ•Œ 이 ν΄λž˜μŠ€κ°€ 어디에 κ΅¬ν˜„λ˜μ–΄ μžˆλ‹€κ³  μ•Œλ €μ£ΌκΈ° μœ„ν•΄ μ½”λ“œ 맨 μœ„μ— μ„ μ–Έν•˜λŠ” 것

 

'μ˜€κ³΅μ™„' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

231102 μ˜€κ³΅μ™„  (0) 2023.11.03
231101 μ˜€κ³΅μ™„  (0) 2023.11.02
231030 μ˜€κ³΅μ™„  (0) 2023.10.31
231028 μ˜€κ³΅μ™„  (0) 2023.10.28
231027 μ˜€κ³΅μ™„  (0) 2023.10.28

+ Recent posts