๐Ÿ“ŒJava ๊ฐ์ฒด, Wrapper ํด๋ž˜์Šค, ๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„ ํฌ๋งท ์ •๋ฆฌ

My Pale Blue Dotยท2025๋…„ 3์›” 10์ผ
0

JAVA

๋ชฉ๋ก ๋ณด๊ธฐ
17/35
post-thumbnail

๐Ÿ“… ๋‚ ์งœ

2025-03-10


๐Ÿ“ ํ•™์Šต ๋‚ด์šฉ


1๏ธโƒฃ Object.toString() ๋ฉ”์„œ๋“œ

โœ… ์„ค๋ช…

  • ๋ชจ๋“  ํด๋ž˜์Šค๋Š” Object ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›์Œ.
  • toString() ๋ฉ”์„œ๋“œ๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํด๋ž˜์Šค๋ช…@ํ•ด์‹œ์ฝ”๋“œ ํ˜•ํƒœ๋กœ ์ถœ๋ ฅ๋จ.
  • ๊ฐ์ฒด์˜ ๊ฐ’์„ ์ถœ๋ ฅํ•˜๋ ค๋ฉด toString()์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•จ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package ch14;

// A ํด๋ž˜์Šค ์ •์˜
class A {
    int x; // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ x
    int y; // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜ y

    // toString() ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ (๊ฐ์ฒด๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜)
    @Override
    public String toString() {
        return "A [x=" + x + ", y=" + y + "]";
    }
}

public class C01ObjectMain {
    public static void main(String[] args) {
        A ob1 = new A(); // A ๊ฐ์ฒด ์ƒ์„ฑ
        System.out.println(ob1); // toString() ์ž๋™ ํ˜ธ์ถœ
        System.out.println(ob1.toString()); // ๋ช…์‹œ์ ์œผ๋กœ toString() ํ˜ธ์ถœ
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ

A [x=0, y=0]
A [x=0, y=0]

2๏ธโƒฃ equals() ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

โœ… ์„ค๋ช…

  • ๊ธฐ๋ณธ equals() ๋ฉ”์„œ๋“œ๋Š” == ์—ฐ์‚ฐ์ž์™€ ๋™์ผํ•˜๊ฒŒ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ต.
  • ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋ ค๋ฉด equals()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ํ•ด์•ผ ํ•จ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package ch14;

// C02Simple ํด๋ž˜์Šค ์ •์˜
class C02Simple {
    int n; // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜

    // ์ƒ์„ฑ์ž
    C02Simple(int n) {
        this.n = n;
    }

    // equals() ๋ฉ”์„œ๋“œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ (๊ฐ์ฒด์˜ ๊ฐ’ ๋น„๊ต)
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof C02Simple) { // obj๊ฐ€ C02Simple ํƒ€์ž…์ธ์ง€ ํ™•์ธ
            C02Simple down = (C02Simple) obj; // ๋‹ค์šด์บ์ŠคํŒ…
            return this.n == down.n; // ๋‘ ๊ฐ์ฒด์˜ n ๊ฐ’์ด ๊ฐ™์€์ง€ ๋น„๊ต
        }
        return false;
    }
}

public class C02ObjectMain {
    public static void main(String[] args) {
        C02Simple ob1 = new C02Simple(10);
        C02Simple ob2 = new C02Simple(10);
        System.out.println(ob1.equals(ob2)); // true (๊ฐ’ ๋น„๊ต)
    }
}

๐Ÿ”น ์ถœ๋ ฅ ๊ฒฐ๊ณผ

true

3๏ธโƒฃ equals()์™€ hashCode() ํ•จ๊ป˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉ

โœ… ์„ค๋ช…

  • ๊ฐ™์€ ๊ฐ์ฒด๋Š” ๊ฐ™์€ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์•ผ ํ•œ๋‹ค๋Š” ๊ทœ์น™์ด ์žˆ์Œ.
  • Objects.hash()๋ฅผ ํ™œ์šฉํ•˜์—ฌ hashCode()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉ.

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package ch14;

import java.util.Objects;

// C03Simple ํด๋ž˜์Šค ์ •์˜
class C03Simple {
    int n; // ๋ฉค๋ฒ„ ๋ณ€์ˆ˜

    // ์ƒ์„ฑ์ž
    C03Simple(int n) {
        this.n = n;
    }

    // equals() ์˜ค๋ฒ„๋ผ์ด๋”ฉ
    @Override
    public boolean equals(Object obj) {
        if (obj instanceof C03Simple) {
            C03Simple down = (C03Simple) obj;
            return this.n == down.n;
        }
        return false;
    }

    // hashCode() ์˜ค๋ฒ„๋ผ์ด๋”ฉ (Objects.hash() ํ™œ์šฉ)
    @Override
    public int hashCode() {
        return Objects.hash(this.n);
    }
}

public class C03ObjectMain {
    public static void main(String[] args) {
        C03Simple ob1 = new C03Simple(1);
        System.out.println(ob1.hashCode()); // ํ•ด์‹œ์ฝ”๋“œ ์ถœ๋ ฅ
    }
}

4๏ธโƒฃ Wrapper ํด๋ž˜์Šค

โœ… ์„ค๋ช…

  • ๊ธฐ๋ณธ ์ž๋ฃŒํ˜•์„ ๊ฐ์ฒด๋กœ ๊ฐ์‹ธ๋Š” ํด๋ž˜์Šค (Integer, Double ๋“ฑ)
  • Auto-Boxing & Auto-Unboxing ์ง€์› (๊ธฐ๋ณธ ํƒ€์ž…๊ณผ ๊ฐ์ฒด ๊ฐ„ ์ž๋™ ๋ณ€ํ™˜)

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package ch14;

public class C04WrapperMain {
    public static void main(String[] args) {
        Integer ob1 = Integer.valueOf("100"); // Boxing (๋ฌธ์ž์—ด โ†’ Integer)
        int n1 = ob1.intValue(); // UnBoxing (Integer โ†’ int)

        Integer ob2 = 100; // Auto-Boxing (๊ธฐ๋ณธ ํƒ€์ž… โ†’ ๊ฐ์ฒด)
        int n2 = ob2; // Auto-Unboxing (๊ฐ์ฒด โ†’ ๊ธฐ๋ณธ ํƒ€์ž…)

        System.out.println(n1 + n2); // 100 + 100 = 200
    }
}

5๏ธโƒฃ ๋‚ ์งœ ํฌ๋งท ๋ณ€ํ™˜ (SimpleDateFormat)

โœ… ์„ค๋ช…

  • SimpleDateFormat์„ ํ™œ์šฉํ•˜์—ฌ ๋‚ ์งœ๋ฅผ ํฌ๋งท ๋ณ€๊ฒฝ (parse(), format() ์‚ฌ์šฉ).

โœ… ์˜ˆ์ œ ์ฝ”๋“œ

package ch14;

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Scanner;

public class C06SimpleDateFormatMain {
    public static void main(String[] args) throws ParseException {
        Scanner sc = new Scanner(System.in);
        System.out.print("YYYY/MM/DD ์ž…๋ ฅ : ");
        String ymd = sc.next(); // ์‚ฌ์šฉ์ž ์ž…๋ ฅ ๋ฐ›๊ธฐ

        // ์ž…๋ ฅ ํฌ๋งท ์ •์˜
        SimpleDateFormat fmtin = new SimpleDateFormat("yyyy/MM/dd");
        Date date = fmtin.parse(ymd); // ๋ฌธ์ž์—ด โ†’ Date ๋ณ€ํ™˜

        // ์ถœ๋ ฅ ํฌ๋งท ์ •์˜
        SimpleDateFormat fmtout = new SimpleDateFormat("yyyy~MM~dd");
        System.out.println("๋ณ€ํ™˜๋œ ๋‚ ์งœ: " + fmtout.format(date)); // Date โ†’ ๋ฌธ์ž์—ด ๋ณ€ํ™˜

        sc.close();
    }
}

๐Ÿ”ฅ ์ •๋ฆฌ

  1. toString()์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ฉด ๊ฐ์ฒด ์ •๋ณด๋ฅผ ๋ฌธ์ž์—ด๋กœ ์ถœ๋ ฅํ•  ์ˆ˜ ์žˆ์Œ.
  2. equals()๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ==๊ณผ ๋™์ผํ•˜๋ฏ€๋กœ, ๊ฐ์ฒด์˜ ๊ฐ’์„ ๋น„๊ตํ•˜๋ ค๋ฉด ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•จ.
  3. equals()๋ฅผ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜๋ฉด hashCode()๋„ ํ•จ๊ป˜ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•ด์•ผ ํ•จ.
  4. Wrapper ํด๋ž˜์Šค๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๊ธฐ๋ณธ ํƒ€์ž…์„ ๊ฐ์ฒด์ฒ˜๋Ÿผ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ์Œ.
  5. ๋‚ ์งœ ํฌ๋งท ๋ณ€ํ™˜์€ SimpleDateFormat ๋˜๋Š” DateTimeFormatter๋ฅผ ํ™œ์šฉํ•˜๋ฉด ๋จ.

๐Ÿ”— ์ฐธ๊ณ  ์ž๋ฃŒ


profile
Here, My Pale Blue.๐ŸŒ

0๊ฐœ์˜ ๋Œ“๊ธ€