⌨️ Language/Java

[Java] 기초 문법 - λ³€μˆ˜, μƒμˆ˜, μžλ£Œν˜•, μ—°μ‚°μž μ™„μ „ 정리!

hyebin (Helia) 2025. 5. 8. 17:26
λ°˜μ‘ν˜•

λͺ©μ°¨

     

    Java둜 ν”„λ‘œκ·Έλž˜λ°μ„ μ‹œμž‘ν•  λ•Œ λ°˜λ“œμ‹œ 이해해야 ν•˜λŠ” κ°œλ…μ΄ μžˆμŠ΅λ‹ˆλ‹€.

    λ°”λ‘œ λ³€μˆ˜(Variable), μƒμˆ˜(Constant), 그리고 μžλ£Œν˜•(Data Type)μž…λ‹ˆλ‹€.

     

    JavaλŠ” 정적 νƒ€μž… μ–Έμ–΄μž…λ‹ˆλ‹€. 즉, λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ μ–΄λ–€ μ’…λ₯˜μ˜ 데이터λ₯Ό 담을 것인지 λͺ…ν™•ν•˜κ²Œ μ§€μ •ν•΄μ•Ό ν•˜μ£ .

    μ˜€λŠ˜μ€ μžλ°”μ˜ κ°€μž₯ 기본이 λ˜λŠ” 이 μ„Έ κ°€μ§€ κ°œλ…κ³Ό ν•¨κ»˜, μ—°μ‚°μžκΉŒμ§€ ν•œ λ²ˆμ— 정리해 λ³΄κ² μŠ΅λ‹ˆλ‹€


    πŸ“¦ λ³€μˆ˜λž€?

    λ³€μˆ˜λŠ” 값을 μ €μž₯ν•˜κΈ° μœ„ν•œ λ©”λͺ¨λ¦¬ κ³΅κ°„μž…λ‹ˆλ‹€.

    Javaμ—μ„œλŠ” λ³€μˆ˜λ₯Ό μ„ μ–Έν•  λ•Œ λ°˜λ“œμ‹œ μžλ£Œν˜•μ„ λͺ…μ‹œν•΄μ•Ό ν•΄μš”.

    int age = 25;     // λ‚˜μ΄λ₯Ό μ €μž₯ν•˜λŠ” λ³€μˆ˜
    String name = "혜빈"; // 이름을 μ €μž₯ν•˜λŠ” λ³€μˆ˜
    🧠 JavaλŠ” 정적 νƒ€μž… 언어이기 λ•Œλ¬Έμ—, Pythonμ΄λ‚˜ JavaScript처럼 μžλ£Œν˜•μ„ μžλ™ μΆ”λ‘ ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
    λ”°λΌμ„œ λ³€μˆ˜ νƒ€μž…μ„ λ°˜λ“œμ‹œ μ§€μ •ν•΄μ€˜μ•Ό ν•΄μš”!

    🧩 Java의 μžλ£Œν˜• (Data Type)

    Java의 μžλ£Œν˜•μ€ 크게 κΈ°λ³Έν˜•(Primitive Type)κ³Ό μ°Έμ‘°ν˜•(Reference Type)으둜 으둜 λ‚˜λ‰©λ‹ˆλ‹€.

     

    πŸ“˜ κΈ°λ³Έν˜• (Primitive Type)

    κΈ°λ³Έν˜•μ€ κ°’ 자체λ₯Ό μ €μž₯ν•˜λŠ” μžλ£Œν˜•μ΄λ©°, 총 8κ°€μ§€κ°€ μ‘΄μž¬ν•©λ‹ˆλ‹€.

    μžλ£Œν˜• 크기 μ„€λͺ… μ˜ˆμ‹œ
    byte 1 byte -128 ~ 127 byte b = 100;
    short 2 byte -32,768 ~ 32,767 short s = 30000;
    int 4 byte μ •μˆ˜ κΈ°λ³Έν˜• int num = 123;
    long 8 byte 큰 μ •μˆ˜ κ°’ long big = 10000000000L;
    float 4 byte μ†Œμˆ˜μ  숫자 (단정도) float f = 3.14f;
    double 8 byte μ†Œμˆ˜μ  숫자 (배정도) double d = 3.141592;
    char 2 byte 문자 ν•˜λ‚˜ char c = 'A';
    boolean 1 bit true / false boolean isActive = true;
    πŸ’‘ μˆ«μžν˜•μ€ int, μ‹€μˆ˜ν˜•μ€ double, λ¬ΈμžλŠ” char, λ…Όλ¦¬λŠ” boolean이 κ°€μž₯ 자주 μ“°μž…λ‹ˆλ‹€.

     

    πŸ“™ μ°Έμ‘°ν˜• (Reference Type)

    μ°Έμ‘°ν˜•μ€ 값이 μ•„λ‹Œ 객체의 μ£Όμ†Œλ₯Ό μ €μž₯ν•˜λŠ” νƒ€μž…μž…λ‹ˆλ‹€. λŒ€ν‘œμ μœΌλ‘œ 클래슀, λ°°μ—΄, μΈν„°νŽ˜μ΄μŠ€, μ—΄κ±°ν˜• 등이 이에 ν•΄λ‹Ήν•΄μš”.

    String message = "Hello, Java!";
    int[] numbers = {1, 2, 3, 4, 5};
    User user = new User(); // μ‚¬μš©μž μ •μ˜ 클래슀
    String은 κ°€μž₯ 자주 μ‚¬μš©λ˜λŠ” μ°Έμ‘°ν˜•μ΄λ©°, λ‚΄λΆ€μ μœΌλ‘œλŠ” char λ°°μ—΄λ‘œ ꡬ성돼 μžˆμ–΄μš”.

    πŸ’¬ λ³€μˆ˜λͺ… μž‘μ„± κ·œμΉ™

    • 숫자둜 μ‹œμž‘ν•  수 μ—†μŒ
    • 영문자, 숫자, _, $ μ‚¬μš© κ°€λŠ₯
    • Java μ˜ˆμ•½μ–΄λŠ” μ‚¬μš©ν•  수 μ—†μŒ (int, class λ“±)
    • 카멜 μΌ€μ΄μŠ€(camelCase) ꢌμž₯ → userAge, firstName

    πŸ’‘ λ³€μˆ˜λͺ…은 의미λ₯Ό λͺ…ν™•νžˆ 전달할 수 μžˆλ„λ‘ μž‘μ„±ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. int aλ³΄λ‹€λŠ” int ageμ²˜λŸΌμš”!


    🧊 μƒμˆ˜μ™€ λ¦¬ν„°λŸ΄

    ❄️ μƒμˆ˜ (Constants)

    μƒμˆ˜λŠ” ν•œ 번 값이 ν• λ‹Ήλ˜λ©΄ λ³€κ²½ν•  수 μ—†λŠ” λ³€μˆ˜μž…λ‹ˆλ‹€. Javaμ—μ„œλŠ” final ν‚€μ›Œλ“œλ₯Ό μ‚¬μš©ν•΄ μ„ μ–Έν•©λ‹ˆλ‹€.

    final double PI = 3.14159;
    final int MAX_USERS = 100;
    πŸ’‘ μƒμˆ˜λŠ” 보톡 λŒ€λ¬Έμžμ™€ μ–Έλ”μŠ€μ½”μ–΄(_)λ₯Ό μ‘°ν•©ν•΄ μž‘μ„±ν•˜λŠ” μŠ€λ„€μ΄ν¬ μΌ€μ΄μŠ€(SNAKE_CASE)λ₯Ό ꢌμž₯ν•©λ‹ˆλ‹€.

     

    πŸ“ λ¦¬ν„°λŸ΄ (Literals)

    λ¦¬ν„°λŸ΄μ€ μ†ŒμŠ€ μ½”λ“œμ— 직접 μž‘μ„±λœ κ³ μ •λœ 값을 λ§ν•©λ‹ˆλ‹€.

    int number = 10;          // 10은 μ •μˆ˜ λ¦¬ν„°λŸ΄
    double pi = 3.14;         // 3.14λŠ” μ‹€μˆ˜ λ¦¬ν„°λŸ΄
    char grade = 'A';         // 'A'λŠ” 문자 λ¦¬ν„°λŸ΄
    String name = "Java";     // "Java"λŠ” λ¬Έμžμ—΄ λ¦¬ν„°λŸ΄

    πŸ”„ νƒ€μž… λ³€ν™˜ (Type Casting)

    Javaμ—μ„œλŠ” μžλ£Œν˜•μ΄ λ‹€λ₯΄λ©΄ λͺ…μ‹œμ  λ˜λŠ” λ¬΅μ‹œμ  λ³€ν™˜μ„ 톡해 νƒ€μž…μ„ μΌμΉ˜μ‹œμΌœμ•Ό ν•©λ‹ˆλ‹€.

     

     λ¬΅μ‹œμ  ν˜• λ³€ν™˜ (μžλ™)

    크기가 μž‘μ€ νƒ€μž… → 큰 νƒ€μž…μœΌλ‘œ μžλ™ λ³€ν™˜λ©λ‹ˆλ‹€.

    int a = 10;
    double b = a; // μžλ™ λ³€ν™˜

     

    λͺ…μ‹œμ  ν˜• λ³€ν™˜ (κ°•μ œ)

    큰 νƒ€μž… → μž‘μ€ νƒ€μž…μ€ λͺ…μ‹œμ  ν˜•λ³€ν™˜μ΄ ν•„μš”ν•©λ‹ˆλ‹€. 데이터 손싀이 λ°œμƒν•  수 있기 λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ•Ό ν•©λ‹ˆλ‹€.

    double d = 3.99;
    int i = (int) d; // κ²°κ³Ό: 3 (μ†Œμˆ˜μ  버림)

    πŸ”§ μ—°μ‚°μž

    μ‚°μˆ  μ—°μ‚°μž

    기본적인 μˆ˜ν•™ 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

    +  // λ”ν•˜κΈ°
    -  // λΉΌκΈ°
    *  // κ³±ν•˜κΈ°
    /  // λ‚˜λˆ„κΈ°
    %  // λ‚˜λ¨Έμ§€
    
    int a = 10, b = 3;
    System.out.println(a / b); // 3
    System.out.println(a % b); // 1

    증감 μ—°μ‚°μž

    값을 1 μ¦κ°€μ‹œν‚€κ±°λ‚˜ κ°μ†Œμ‹œν‚΅λ‹ˆλ‹€.

    int x = 5;
    System.out.println(++x);  // μ „μœ„ 증가: λ¨Όμ € 증가 ν›„ μ‚¬μš© (6 좜λ ₯)
    System.out.println(x++);  // ν›„μœ„ 증가: λ¨Όμ € μ‚¬μš© ν›„ 증가 (6 좜λ ₯ ν›„ xλŠ” 7)
    System.out.println(--x);  // μ „μœ„ κ°μ†Œ: λ¨Όμ € κ°μ†Œ ν›„ μ‚¬μš© (6 좜λ ₯)
    System.out.println(x--);  // ν›„μœ„ κ°μ†Œ: λ¨Όμ € μ‚¬μš© ν›„ κ°μ†Œ (6 좜λ ₯ ν›„ xλŠ” 5)

    비ꡐ μ—°μ‚°μž

    두 값을 λΉ„κ΅ν•˜μ—¬ boolean κ²°κ³Όλ₯Ό λ°˜ν™˜ν•©λ‹ˆλ‹€.

    ==  // κ°™λ‹€
    !=  // λ‹€λ₯΄λ‹€
    >   // 크닀
    <   // μž‘λ‹€
    >=  // ν¬κ±°λ‚˜ κ°™λ‹€
    <=  // μž‘κ±°λ‚˜ κ°™λ‹€
    
    System.out.println(10 > 5);  // true
    System.out.println(10 != 10); // false

    논리 μ—°μ‚°μž

    boolean 값에 λŒ€ν•œ 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

    &&  // AND - λ‘˜ λ‹€ true일 λ•Œλ§Œ true
    ||  // OR  - ν•˜λ‚˜λΌλ„ trueλ©΄ true
    !   // NOT - 논리값 λ°˜μ „
    
    boolean a = true, b = false;
    System.out.println(a && b);  // AND: false (λ‘˜ λ‹€ trueμ—¬μ•Ό true)
    System.out.println(a || b);  // OR: true (ν•˜λ‚˜λΌλ„ trueλ©΄ true)
    System.out.println(!a);      // NOT: false (λ°˜μ „)

    λŒ€μž… μ—°μ‚°μž

    λ³€μˆ˜μ— 값을 ν• λ‹Ήν•©λ‹ˆλ‹€.

    =   // λŒ€μž…
    +=  // λ”ν•΄μ„œ λŒ€μž…
    -=  // λΉΌμ„œ λŒ€μž…
    *=  // κ³±ν•΄μ„œ λŒ€μž…
    /=  // λ‚˜λˆ μ„œ λŒ€μž…
    
    int x = 5;
    x += 3; // x = x + 3 → xλŠ” 8이 됨

    λΉ„νŠΈ μ—°μ‚°μž

    λΉ„νŠΈ λ‹¨μœ„λ‘œ 연산을 μˆ˜ν–‰ν•©λ‹ˆλ‹€.

    &  // AND
    |  // OR
    ^  // XOR
    ~  // NOT
    << // μ™Όμͺ½ μ‹œν”„νŠΈ
    >> // 였λ₯Έμͺ½ μ‹œν”„νŠΈ
    >>> // λΆ€ν˜Έ μ—†λŠ” 였λ₯Έμͺ½ μ‹œν”„νŠΈ

    μ‚Όν•­ μ—°μ‚°μž

    쑰건에 따라 값을 μ„ νƒν•©λ‹ˆλ‹€.

    int age = 20;
    String status = (age >= 18) ? "성인" : "λ―Έμ„±λ…„μž";
    System.out.println(status);  // "성인" 좜λ ₯

     

    πŸ” μ—°μ‚°μž μš°μ„ μˆœμœ„

    1. κ΄„ν˜Έ ()
    2. 단항 μ—°μ‚°μž (++, --, +, -, ~, !)
    3. μ‚°μˆ  μ—°μ‚°μž (+, -, *, /, %)
    4. 비ꡐ μ—°μ‚°μž (<, <=, >=, ==, !=)
    5. 논리 μ—°μ‚°μž (&&, ||, &, |, ^, !)
    6. μ‚Όν•­ μ—°μ‚°μž
    7. λŒ€μž… μ—°μ‚°μž (=, +=, -=, *=, /=, %=)
    πŸ’‘ λ³΅μž‘ν•œ 연산을 ν•  λ•ŒλŠ” κ΄„ν˜Έ ()λ₯Ό μ‚¬μš©ν•˜μ—¬ λͺ…ν™•ν•˜κ²Œ μš°μ„ μˆœμœ„λ₯Ό μ§€μ •ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€.

    βœ… 마무리

    μ˜€λŠ˜μ€ Java의 κΈ°λ³Έ μ€‘μ˜ 기본인 λ³€μˆ˜, μƒμˆ˜, μ—°μ‚°μžμ— λŒ€ν•΄ μ•Œμ•„λ³΄μ•˜μŠ΅λ‹ˆλ‹€. 이 κ°œλ…λ“€μ€ λͺ¨λ“  Java ν”„λ‘œκ·Έλž¨μ˜ κΈ°μ΄ˆκ°€ λ˜λ―€λ‘œ ν™•μ‹€νžˆ μ΄ν•΄ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€.

     

    JavaλŠ” λ³€μˆ˜ μ„ μ–Έ μ‹œ νƒ€μž…μ„ λͺ…μ‹œν•΄μ•Ό ν•˜κ³ , 각 μžλ£Œν˜•μ— λ§žλŠ” λ¦¬ν„°λŸ΄κ³Ό μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. κΈ°λ³Έ κ°œλ…μ΄μ§€λ§Œ μ •ν™•ν•˜κ²Œ μ•Œκ³  μžˆμ–΄μ•Ό μ½”λ”© μ‹œ 였λ₯˜λ₯Ό 쀄일 수 μžˆλŠ” 핡심 νŒŒνŠΈμž…λ‹ˆλ‹€.

     

    λ‹€μŒ μ‹œκ°„μ—λŠ” 쑰건문과 λ°˜λ³΅λ¬Έμ— λŒ€ν•΄ μ•Œμ•„λ³΄κ² μŠ΅λ‹ˆλ‹€. κΆκΈˆν•œ λ‚΄μš©μ΄λ‚˜ μΆ”κ°€λ‘œ μ•Œκ³  싢은 κ°œλ…μ΄ μžˆλ‹€λ©΄ λŒ“κΈ€λ‘œ λ‚¨κ²¨μ£Όμ„Έμš” 😊

    λ°˜μ‘ν˜•