λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
Language/Java

[Java]μžλ°” λ³€μˆ˜: 데이터 μ €μž₯κ³Ό 관리λ₯Ό μœ„ν•œ 기초 이해

by YJ Dev 2024. 4. 19.
728x90
λ°˜μ‘ν˜•
SMALL

λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž˜λ°μ—μ„œ 데이터λ₯Ό μ €μž₯ν•˜κ³  μ‘°μž‘ν•˜λŠ” 데에 μ€‘μš”ν•œ 역할을 ν•©λ‹ˆλ‹€. 이번 ν¬μŠ€νŒ…μ—μ„œλŠ” μžλ°” λ³€μˆ˜μ— λŒ€ν•œ μ™„λ²½ν•œ κ°€μ΄λ“œλ₯Ό μ œκ³΅ν•˜κ² μŠ΅λ‹ˆλ‹€. μžλ°” λ³€μˆ˜μ˜ κ°œλ…λΆ€ν„° μ„ μ–Έ, μ΄ˆκΈ°ν™”, 넀이밍 κ·œμΉ™, 그리고 μ‹€μ œ ν™œμš©κΉŒμ§€ μžμ„Ένžˆ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€.

μžλ°” λ³€μˆ˜


1. λ³€μˆ˜λž€?🧐

μ»΄ν“¨ν„°μ˜ λ©”λͺ¨λ¦¬, 일λͺ… RAM(Random Access Memory), 은 ν”„λ‘œκ·Έλž¨μ΄ 데이터λ₯Ό λ³΄κ΄€ν•˜κ³  μ²˜λ¦¬ν•˜λŠ” 데에 핡심적인 역할을 ν•©λ‹ˆλ‹€. λ©”λͺ¨λ¦¬λŠ” λ§Žμ€ λ²ˆμ§€(μ£Όμ†Œ)λ“€λ‘œ 이루어져 있으며, 각 λ²ˆμ§€λŠ” 데이터λ₯Ό μ €μž₯ν•  수 μžˆλŠ” μž‘μ€ κ³΅κ°„μž…λ‹ˆλ‹€. ν”„λ‘œκ·Έλž¨μ€ μ΄λŸ¬ν•œ λ©”λͺ¨λ¦¬ 곡간에 데이터λ₯Ό μ €μž₯ν•˜κ³ , ν•„μš”ν•  λ•Œ ν•΄λ‹Ή 데이터λ₯Ό 읽어와 μž‘μ—…μ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. λ©”λͺ¨λ¦¬λŠ” 컴퓨터가 μž‘μ—…μ„ μ²˜λ¦¬ν•˜λŠ” λ™μ•ˆ ν•„μš”ν•œ 데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ ν”„λ‘œκ·Έλž¨μ΄ μ’…λ£Œλ˜λ©΄ λ©”λͺ¨λ¦¬μ— μ €μž₯된 λ°μ΄ν„°λŠ” μ‚¬λΌμ§€κ²Œ λ©λ‹ˆλ‹€.

λ©”λͺ¨λ¦¬λŠ” μ€‘μš”ν•œ μžμ›μ΄μ§€λ§Œ, 데이터λ₯Ό 어디에 μ–΄λ–»κ²Œ μ €μž₯ν•  지λ₯Ό λͺ…ν™•νžˆ μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ λ©”λͺ¨λ¦¬ 관리가 λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€. 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ ν”„λ‘œκ·Έλž˜λ¨ΈλŠ” λ³€μˆ˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ μ‚¬μš©λ˜λŠ” 데이터λ₯Ό λ©”λͺ¨λ¦¬μ— μ €μž₯ν•˜κΈ° μœ„ν•œ 곡간을 ν• λ‹Ήν•˜λŠ” 데 μ‚¬μš©λ©λ‹ˆλ‹€. λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ©΄ 데이터λ₯Ό μ‰½κ²Œ μ €μž₯ν•˜κ³  검색할 수 있으며, μ½”λ“œμ˜ 가독성과 μœ μ§€λ³΄μˆ˜μ„±μ„ ν–₯상할 수 μžˆμŠ΅λ‹ˆλ‹€. λ”°λΌμ„œ λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ˜ 싀행에 μžˆμ–΄μ„œ λΆˆκ°€κ²°ν•œ μš”μ†Œμž…λ‹ˆλ‹€.


2. λ³€μˆ˜μ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”πŸ“’

λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ°˜λ“œμ‹œ μ„ μ–Έλ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€. 선언은 λ³€μˆ˜μ˜ νƒ€μž…κ³Ό 이름을 μ§€μ •ν•˜λŠ” 것을 μ˜λ―Έν•©λ‹ˆλ‹€.
λ³€μˆ˜λ₯Ό μ„ μ–Έ ν•œ ν›„μ—λŠ” μ΄ˆκΈ°ν™”ν•˜μ—¬ 값을 ν• λ‹Ήν•΄μ•Ό ν•©λ‹ˆλ‹€. μ΄ˆκΈ°ν™”λž€ λ³€μˆ˜μ— 값을 처음으둜 ν• λ‹Ήν•˜λŠ” 과정을 λ§ν•©λ‹ˆλ‹€.
λ³€μˆ˜μ— 값을 μ €μž₯ν•  λ•ŒλŠ” λŒ€μž… μ—°μ‚°μžμΈ = λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€. μ΄λ•Œ μˆ˜ν•™μ˜ λ“±ν˜Έλ‘œμ„œμ˜ κ°™λ‹€λŠ” μ˜λ―Έκ°€ μ•„λ‹Œ λŒ€μž…ν•œλ‹€λŠ”
의미둜 μ‚¬μš©λ©λ‹ˆλ‹€.

public class Main {
    public static void main(String[] args) {
        // μ •μˆ˜ν˜• λ³€μˆ˜ μ„ μ–Έ
        int number;
        
        // λ³€μˆ˜μ— κ°’ ν• λ‹Ή
        number = 10;
        
        // λ³€μˆ˜μ˜ κ°’ 좜λ ₯
        System.out.println("λ³€μˆ˜μ˜ κ°’: " + number);
        
        // μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”
        double doubleNumber = 3.14;
        
        // λ³€μˆ˜μ˜ κ°’ 좜λ ₯
        System.out.println("λ”λΈ”ν˜• λ³€μˆ˜μ˜ κ°’: " + doubleNumber);
    }
}


μœ„ μ˜ˆμ œμ—μ„œλŠ” λ¨Όμ € μ •μˆ˜ν˜• λ³€μˆ˜ numberλ₯Ό μ„ μ–Έν•˜κ³ , 이후에 값을 ν• λ‹Ήν•˜λŠ” 과정을 λ³΄μ—¬μ€λ‹ˆλ‹€. 그리고 이 λ³€μˆ˜μ˜ 값을 좜λ ₯ν•©λ‹ˆλ‹€. λ˜ν•œ, λ³€μˆ˜λ₯Ό μ„ μ–Έκ³Ό λ™μ‹œμ— μ΄ˆκΈ°ν™”ν•˜λŠ” 방법도 λ³΄μ—¬μ€λ‹ˆλ‹€.

public class Main {
    public static void main(String[] args) {
        // μ •μˆ˜ν˜• λ³€μˆ˜ μ„ μ–Έ
        int number;
        
        // λ³€μˆ˜μ— κ°’ ν• λ‹Ή
        number = 10;
        
        // λ³€μˆ˜μ˜ κ°’ 좜λ ₯
        System.out.println("λ³€μˆ˜μ˜ κ°’: " + number);
        
        // μ„ μ–Έλ§Œ ν•˜κ³  μ΄ˆκΈ°ν™”λ₯Ό ν•˜μ§€ μ•Šμ€ 경우
        int uninitializedNumber;
        
        // μ•„λž˜ 주석 처리된 μ½”λ“œλŠ” 컴파일 μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€.
        // System.out.println("μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ³€μˆ˜μ˜ κ°’: " + uninitializedNumber);
        
        // λ”°λΌμ„œ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”ν•΄μ•Ό ν•©λ‹ˆλ‹€.
    }
}

⚠️ Error⚠️ The local variable value may not have been initialized
(컴파일 μ—λŸ¬ : 지역 λ³€μˆ˜ 값이 μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ•˜μ„ 수 μžˆμŠ΅λ‹ˆλ‹€.)

이 μ˜ˆμ œμ—μ„œλŠ” μ •μˆ˜ν˜• λ³€μˆ˜
uninitializedNumberλ₯Ό μ„ μ–Έλ§Œ ν•˜κ³  μ΄ˆκΈ°ν™”ν•˜μ§€ μ•Šμ€ μƒνƒœλ‘œ μ‚¬μš©ν•˜λ €κ³  μ‹œλ„ν•˜μ˜€μŠ΅λ‹ˆλ‹€. 주석 처리된 μ½”λ“œλ₯Ό μ œκ±°ν•˜κ³  μ‹€ν–‰ν•˜λ©΄ 컴파일 μ—λŸ¬κ°€ λ°œμƒν•©λ‹ˆλ‹€.
μ΄ˆκΈ°ν™”λ˜μ§€ μ•Šμ€ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜λ €κ³  ν•˜λ©΄ μ»΄νŒŒμΌλŸ¬κ°€ μ—λŸ¬λ₯Ό λ°œμƒμ‹œν‚€λ―€λ‘œ, λ³€μˆ˜λ₯Ό μ‚¬μš©ν•˜κΈ° 전에 λ°˜λ“œμ‹œ μ΄ˆκΈ°ν™”ν•΄μ•Ό 함을 μ•Œ 수 μžˆμŠ΅λ‹ˆλ‹€.


3. λ³€μˆ˜μ˜ 넀이밍 κ·œμΉ™πŸŽ²

λ³€μˆ˜λͺ…은 μžλ°”μ˜ 넀이밍 κ·œμΉ™μ— 따라 μž‘μ„±λ˜μ–΄μ•Ό ν•©λ‹ˆλ‹€.

  • λ³€μˆ˜λͺ…은 μ†Œλ¬Έμžλ‘œ μ‹œμž‘
  • λ³€μˆ˜λͺ… μ€‘κ°„λΆ€ν„°λŠ” 문자, 숫자, $, _ 둜 ν‘œν˜„ κ°€λŠ₯ (μ™Έ 특수문자 λΆˆκ°€)
  • μ—¬λŸ¬ 단어가 결합될 경우 μΉ΄λ©œν‘œκΈ°λ²•μ„ μ‚¬μš©ν•˜λŠ” 것이 κ΄€λ‘€
  • λ³€μˆ˜λͺ…은 의미λ₯Ό νŒŒμ•…ν•˜κΈ° μ‰½κ²Œ μž‘μ„±λ˜μ–΄μ•Ό 함
  • μžλ°” μ˜ˆμ•½μ–΄λŠ” λ³€μˆ˜λͺ…μœΌλ‘œ μ‚¬μš©ν•  수 μ—†μŒ

🐫Camel Case🐫

첫 λ‹¨μ–΄λŠ” μ†Œλ¬Έμž, λ‹€μŒ λ‹¨μ–΄λŠ” λŒ€λ¬Έμžλ₯Ό μ‚¬μš©ν•˜μ—¬ κ·Έ λͺ¨μ–‘이 마치 낙타와 κ°™λ‹€κ³  ν•΄μ„œ 뢙여진 μ΄λ¦„μž…λ‹ˆλ‹€. ex) camelCase


4. λ³€μˆ˜μ˜ ν™œμš©πŸ‘‍πŸ—¨

λ³€μˆ˜λŠ” ν”„λ‘œκ·Έλž¨μ—μ„œ 데이터λ₯Ό μž„μ‹œλ‘œ μ €μž₯ν•˜κ³  μ‚¬μš©ν•˜λŠ” 데에 ν•„μˆ˜μ μž…λ‹ˆλ‹€. λ˜ν•œ λ³€μˆ˜λŠ” λ‹€λ₯Έ λ³€μˆ˜μ— ν• λ‹Ήλ¨μœΌλ‘œμ¨ λ©”λͺ¨λ¦¬ 간에 값을 볡사할 수 μžˆμŠ΅λ‹ˆλ‹€.

public class Main {
    public static void main(String[] args) {
        // λ³€μˆ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”
        int firstNumber = 10;
        int secondNumber;

        // λ³€μˆ˜μ— λ‹€λ₯Έ λ³€μˆ˜μ˜ κ°’ λŒ€μž…
        secondNumber = firstNumber;

        // λ³€μˆ˜ κ°’ 좜λ ₯
        System.out.println("첫 번째 λ³€μˆ˜μ˜ κ°’: " + firstNumber);
        System.out.println("두 번째 λ³€μˆ˜μ˜ κ°’: " + secondNumber);
    }
}


이 μ˜ˆμ œμ—μ„œλŠ” λ¨Όμ € firstNumber와 secondNumberλΌλŠ” 두 개의 λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³  μ΄ˆκΈ°ν™”ν•©λ‹ˆλ‹€. 그리고 secondNumber에 firstNumber의 값을 λŒ€μž…ν•˜μ—¬ λ©”λͺ¨λ¦¬ 간에 값을 λ³΅μ‚¬ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ 두 λ³€μˆ˜μ˜ 값을 좜λ ₯ν•©λ‹ˆλ‹€.

public class Main {
    public static void main(String[] args) {
        // λ³€μˆ˜ μ„ μ–Έκ³Ό μ΄ˆκΈ°ν™”
        int firstNumber = 10;
        int secondNumber = 20;

        // 두 λ³€μˆ˜μ˜ κ°’ κ΅ν™˜
        int temp = firstNumber;
        firstNumber = secondNumber;
        secondNumber = temp;

        // λ³€μˆ˜ κ°’ 좜λ ₯
        System.out.println("첫 번째 λ³€μˆ˜μ˜ κ°’: " + firstNumber);
        System.out.println("두 번째 λ³€μˆ˜μ˜ κ°’: " + secondNumber);
    }
}


μœ„ μ½”λ“œλŠ” 두 λ³€μˆ˜μ˜ 값을 κ΅ν™˜ν•˜λŠ”λ° μ‚¬μš©λ©λ‹ˆλ‹€. 이 μ½”λ“œμ—μ„œλŠ” λ¨Όμ € μž„μ‹œ λ³€μˆ˜ tempλ₯Ό μ„ μ–Έν•˜μ—¬ 첫 번째 λ³€μˆ˜μ˜ 값을 μ €μž₯ν•©λ‹ˆλ‹€. 그리고 첫 번째 λ³€μˆ˜μ—λŠ” 두 번째 λ³€μˆ˜μ˜ 값을 λŒ€μž…ν•˜κ³ , λ§ˆμ§€λ§‰μœΌλ‘œ 두 번째 λ³€μˆ˜μ—λŠ” μž„μ‹œ λ³€μˆ˜ temp에 μ €μž₯된 값을 λŒ€μž…ν•˜μ—¬ 두 λ³€μˆ˜μ˜ 값을 κ΅ν™˜ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰μœΌλ‘œ κ΅ν™˜λœ 두 λ³€μˆ˜μ˜ 값을 좜λ ₯ν•©λ‹ˆλ‹€.
μ•„λž˜ 그림은 값이 두 λ³€μˆ˜μ˜ 값이 κ΅ν™˜λ˜λŠ” μˆœμ„œμž…λ‹ˆλ‹€.

λ³€μˆ˜μ˜ κ°’ κ΅ν™˜ temp


5. 핡심 λ‚΄μš©πŸ‘€

μžλ°” λ³€μˆ˜

728x90
λ°˜μ‘ν˜•