๐ŸŒฑ ์ธํ”„๋Ÿฐ/โ˜•๏ธ ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” - ์ค‘๊ธ‰ 1ํŽธ

์ž๋ฐ” ๋ž˜ํผ, Class ์ด์ •๋ฆฌ

mallin 2025. 7. 19. 01:53

โ˜•๏ธ  ๊น€์˜ํ•œ์˜ ์‹ค์ „ ์ž๋ฐ” - ์ค‘๊ธ‰ 1ํŽธ ์„ ๋“ฃ๊ณ  ์ž‘์„ฑํ•˜๋Š” ๋ณต์Šต ๋ธ”๋กœ๊ทธ ์ž…๋‹ˆ๋‹ค.

 

0. ๋ฐฐ๊ฒฝ

์ž๋ฐ”๋ฅผ ์ฒ˜์Œ ๋ฐฐ์šธ ๋•Œ int, double ๊ณผ ๊ฐ™์€ ๊ธฐ๋ณธํ˜•์„ ๋จผ์ € ๋ฐฐ์šด๋‹ค

ํ•˜์ง€๋งŒ ๊ธฐ๋ณธํ˜•์—๋Š” ๋ช…ํ™•ํ•œ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค

๊ทธ๋Ÿฌ๋ฉด ์ด๋Ÿฐ ํ•œ๊ณ„๋ฅผ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ•ด์•ผํ• ๊นŒ !!!?


1. ๊ธฐ๋ณธํ˜•์˜ ํ•œ๊ณ„

๊ธฐ๋ณธํ˜•์€ ํฌ๊ฒŒ ๋‘๊ฐ€์ง€์˜ ํ•œ๊ณ„๊ฐ€ ์กด์žฌํ•œ๋‹ค.

 

  1. ๊ฐ์ฒด๊ฐ€ ์•„๋‹˜ ๐Ÿ™…‍โ™€๏ธ 
    • ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ๋Š” ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋‹ค
    • ์ž๋ฐ”๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ธ๋ฐ, ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ์žฅ์ ์„ ์‚ด๋ฆด ์ˆ˜ ์—†๋‹ค
  2. null ๊ฐ’์„ ๊ฐ€์ง€์ง€ ๋ชปํ•จ ๐Ÿ™…‍โ™€๏ธ
    • ๊ธฐ๋ณธํ˜• ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ null ๊ฐ’์„ ๊ฐ€์งˆ ์ˆ˜ ์—†๋‹ค
    • ๋ฐ์ดํ„ฐ๊ฐ€ ์—†์Œ์ด๋ผ๋Š” ์ƒํƒœ๋ฅผ ํ‘œํ˜„ํ•˜๋ ค๋ฉด int ์˜ ๊ฒฝ์šฐ -1 ์ด๋‚˜ 0 ๋“ฑ์„ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค

์ด๋Ÿฌํ•œ ํ•œ๊ณ„๋ฅผ ๋ฒ—์–ด๋‚˜๊ธฐ ์œ„ํ•ด์„œ ์ง์ ‘ ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž !!!


2. ์ง์ ‘ ๊ธฐ๋ณธํ˜• ํด๋ž˜์Šค ๋งŒ๋“ค๊ธฐ

๋‹จ์ˆœํ•˜๊ฒŒ ๊ธฐ๋ณธํ˜• ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๋ ค๋ฉด ๊ธฐ๋ณธํ˜•์„ class ๋กœ ๊ฐ์‹ธ์ฃผ๋ฉด ๋œ๋‹ค

public class MyInteger {
    private final int value;

    public MyInteger(int value) {
        this.value = value;
    }

    public int getValue() {
        return value;
    }

    public int compareTo(int value, int target) {
        if (value < target) {
            return -1;
        } else if (value > target) {
            return 1;
        } else {
            return 0;
        }
    }
}

 

int value ๋ฅผ private final ๋กœ ๋งŒ๋“ค๊ณ  ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด์„œ 

  • getValue() : value ์กฐํšŒ ๋ฉ”์„œ๋“œ
  • compareTo() : value ๋น„๊ต ๋ฉ”์„œ๋“œ

๋‘ ๊ฐœ์˜ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ–ˆ๋‹ค

์ด๋ฅผ ํ†ตํ•ด์„œ int๋ฅผ ๊ฐ์ฒด๋กœ ๋‹ค๋ฃฐ ์ˆ˜ ์žˆ๊ณ , null ๊ฐ’์„ ํ†ตํ•ด ์—†์Œ์ด๋ผ๋Š” ์ƒํƒœ๋ฅผ ํ‘œ์‹œํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋˜์—ˆ๋‹ค !!


3. ์ž๋ฐ” ๋ž˜ํผ ํด๋ž˜์Šค

์ด๋ ‡๊ฒŒ ํ•˜๋‚˜์”ฉ ๋งŒ๋“ค ํ•„์š” ์—†์ด ์ž๋ฐ”์—์„œ๋Š” ๋ž˜ํผ ํด๋ž˜์Šค๋ฅผ ์ œ๊ณตํ•œ๋‹ค

๋ž˜ํผ ํด๋ž˜์Šค๋Š” ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ธฐ๋ณธํ˜•์˜ ๊ฐ์ฒด ๋ฒ„์ „์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค !!

๊ธฐ๋ณธํ˜•  ๋ž˜ํผ ํด๋ž˜์Šค
byte Byte
short Short
int Integer
long Long
float Float
double Double
char Character
boolean Boolean

 

๊ฐ๊ฐ์˜ ๊ธฐ๋ณธํ˜•์€ ๋ž˜ํผ ํด๋ž˜์Šค์™€ ๋งคํ•‘๋œ๋‹ค

 

๋ž˜ํผ ํด๋ž˜์Šค ์ƒ์„ฑ

Integer newInteger = new Integer(10);
Integer integerObj = Integer.valueOf(10);
Long longObj = Long.valueOf(100);
Double doubleObj = Double.valueOf(10.5);
  • ๋ž˜ํผ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด์ด๊ธฐ ๋•Œ๋ฌธ์— new ํ‚ค์›Œ๋“œ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค
  • ํ•˜์ง€๋งŒ, vaueOf ๋ฐฉ๋ฒ•์ด ๋” ๊ถŒ์œ ๋˜๋Š”๋ฐ ์ž์ฃผ ์‚ฌ์šฉํ•˜๋Š” ๊ฐ’์„ ์บ์‹ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค
  • ๋˜ํ•œ ๋ž˜ํผ ํด๋ž˜์Šค์˜ ๊ฐ’์€ ๋ถˆ๋ณ€์ด๋‹ค

 

 

๋ž˜ํผ ํด๋ž˜์Šค ๊ฐ’ ์ฝ๊ธฐ

int intValue = integerObj.intValue();
long longValue = longObj.longValue();
  • ๊ธฐ๋ณธํ˜•Value() ์˜ ํ˜•์‹์œผ๋กœ ๋ž˜ํผ ํด๋ž˜์Šค ๊ฐ’์„ ์ฝ์„ ์ˆ˜ ์žˆ๋‹ค

 

 

๋ž˜ํผ ํด๋ž˜์Šค ๋น„๊ต

Integer newInteger = new Integer(10);
Integer integerObj = Integer.valueOf(10);

System.out.println("๋น„๊ต");
System.out.println("==: " + (newInteger == integerObj));
System.out.println("equlas: "+(newInteger.equals(integerObj)));
  • == ์œผ๋กœ ๋น„๊ตํ–ˆ์„ ๋•Œ false, equals ๋กœ ๋น„๊ตํ–ˆ์„ ๋•Œ true
  • newInteger ์™€ integerObj ๋Š” ๋‹ค๋ฅธ ์ฐธ์กฐ๊ฐ’์„ ๊ฐ€์ง€๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— == ๋กœ ๋น„๊ตํ•˜๋ฉด false ๊ฐ€ ๋‚˜์˜ค๊ณ 
  • value ๊ฐ€ 10์œผ๋กœ ๋™์ผํ•˜๊ธฐ ๋•Œ๋ฌธ์— equals ๋กœ ๋น„๊ตํ–ˆ์„ ๋• true ๊ฐ€ ๋‚˜์˜จ๋‹ค

 

Integer newInteger = Integer.valueOf(10);
Integer integerObj = Integer.valueOf(10);

System.out.println("๋น„๊ต");
System.out.println("==: " + (newInteger == integerObj));
System.out.println("equlas: "+(newInteger.equals(integerObj)));
  • == ์œผ๋กœ ๋น„๊ตํ–ˆ์„ ๋•Œ true, equals ๋กœ ๋น„๊ตํ–ˆ์„ ๋•Œ true
  • Integer.valueOf ๋กœ ๋งŒ๋“œ๋Š” ๊ฒฝ์šฐ ์บ์‹ฑ๋œ ๊ฐ’์„ ์‚ฌ์šฉํ•˜๊ธฐ ๋•Œ๋ฌธ์— == ๋กœ ๋น„๊ตํ–ˆ์„ ๋•Œ๋„ true ๊ฐ€ ๋‚˜์˜จ๋‹ค 

4. ๋ฐ•์‹ฑ & ์–ธ๋ฐ•์‹ฑ

๋ฐ•์‹ฑ (Boxing)

  • ๊ธฐ๋ณธํ˜• → ๋ž˜ํผํด๋ž˜์Šค
  • ๋ฐ•์Šค์— ๋ฌผ๊ฑด์„ ๋„ฃ์€ ๊ฒƒ ๊ฐ™๋‹ค๊ณ  ํ•ด์„œ ๋ฐ•์‹ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค
  • new Integer() ์€ ์ถ”ํ›„ ์‚ญ์ œ๋  ์˜ˆ์ •์ด๊ธฐ ๋•Œ๋ฌธ์— Integer.valueOf() ๋ฅผ ์‚ฌ์šฉํ•ด์•ผ ํ•œ๋‹ค
  • Integer.valueOf() ์—๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™” ๊ธฐ๋Šฅ์ด ์žˆ๋‹ค. ๊ฐœ๋ฐœ์ž๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” -128 ~ 127 ๋ฒ”์œ„์˜ Integer ํด๋ž˜์Šค๋ฅผ ๋ฏธ๋ฆฌ ์ƒ์„ฑํ•œ๋‹ค.

 

์–ธ๋ฐ•์‹ฑ (Unboxing)

  • ๋ž˜ํผ ํด๋ž˜์Šค → ๊ธฐ๋ณธํ˜•
  • ๋ฐ•์Šค์— ๋“ค์–ด์žˆ๋Š” ๋ฌผ๊ฑด์„ ๊บผ๋‚ด๋Š” ๊ฒƒ๊ฐ™๋‹ค๊ณ  ํ•ด์„œ ์–ธ๋ฐ•์‹ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค

 

์˜คํ† ๋ฐ•์‹ฑ / ์–ธ๋ฐ•์‹ฑ (Autoboxing / AutoUnboxing)

  • ์ปดํŒŒ์ผ๋Ÿฌ๊ฐ€ ๊ฐœ๋ฐœ์ž ๋Œ€์‹  valueOf, xxxValue() ๋“ฑ์˜ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•ด์ค€๋‹ค
  • ์˜คํ†  ๋ฐ•์‹ฑ / ์–ธ๋ฐ•์‹ฑ์œผ๋กœ ๊ธฐ๋ณธํ˜•๊ณผ ๋ž˜ํผํ˜•์„ ์„œ๋กœ ํŽธํ•˜๊ฒŒ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค
Integer boxedValue = value;
Integer boxedValue = Integer.valueOf(value);

int unboxedValue = boxedValue;
int unboxedValue = boxedValue.intValue();

5. Class ํด๋ž˜์Šค

ํด๋ž˜์Šค์˜ ์ •๋ณด (๋ฉ”ํƒ€๋ฐ์ดํ„ฐ) ๋ฅผ ๋‹ค๋ฃจ๋Š”๋ฐ ์‚ฌ์šฉํ•œ๋‹ค

์ฆ‰, ์‹คํ–‰ ์ค‘์ธ ์ž๋ฐ” ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๋‚ด์—์„œ ํ•„์š”ํ•œ ํด๋ž˜์Šค์˜ ์†์„ฑ์™€ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์กฐํšŒํ•˜๊ณ  ์กฐ์ž‘ํ•  ์ˆ˜ ์žˆ๋‹ค

 

์ฃผ์š” ๊ธฐ๋Šฅ

  1. ํƒ€์ž… ์ •๋ณด ์–ป๊ธฐ : ํด๋ž˜์Šค์˜ ์ด๋ฆ„, ์Šˆํผํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค, ์ ‘๊ทผ ์ œํ•œ์ž ๋“ฑ๊ณผ ๊ฐ™์€ ์ •๋ณด๋ฅผ ์กฐํšŒ
  2. ๋ฆฌํ”Œ๋ ‰์…˜ : ํด๋ž˜์Šค์— ์ •์˜๋œ ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ์ƒ์„ฑ์ž ๋“ฑ์„ ์กฐํšŒํ•˜๊ณ  ์ด๋“ค์„ ํ†ตํ•ด ๊ฐ์ฒด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๋“ฑ์˜ ์ž‘์—…
    -> ์ด๊ฑด ์ถ”ํ›„์— ๋ฐฐ์›Œ๋„ ๋œ๋‹ค !!
  3. ๋™์  ๋กœ๋”ฉ๊ณผ ์ƒ์„ฑ : Class.forName() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ํด๋ž˜์Šค๋ฅผ ๋™์ ์œผ๋กœ ๋กœ๋“œํ•˜๊ณ , newInstance() ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ƒˆ๋กœ์šด ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ
  4. ์• ๋…ธํ…Œ์ด์…˜ ์ฒ˜๋ฆฌ : ํด๋ž˜์Šค์— ์ ์šฉ๋œ ์• ๋…ธํ…Œ์ด์…˜์„ ์กฐํšŒํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณต

 

ํด๋ž˜์Šค ์กฐํšŒ

// 1. ํด๋ž˜์Šค์—์„œ ์กฐํšŒ
Class clazz = String.class;
// 2. ์ธ์Šคํ„ด์Šค์—์„œ ์กฐํšŒ
Class clazz1 = new String().getClass();
// 3. ๋ฌธ์ž์—ด๋กœ ์กฐํšŒ
Class clazz2 = Class.forName("java.lang.String");

 

 

Class ํด๋ž˜์Šค์˜ ์ฃผ์š” ๊ธฐ๋Šฅ

  • getDeclaredFields() : ํด๋ž˜์Šค์˜ ๋ชจ๋“  ํ•„๋“œ ์กฐํšŒ
  • getDeclaredMethods() : ํด๋ž˜์Šค์˜ ๋ชจ๋“  ๋ฉ”์„œ๋“œ ์กฐํšŒ
  • getSuperclass() : ํด๋ž˜์Šค์˜ ๋ถ€๋ชจ ํด๋ž˜์Šค ์กฐํšŒ
  • getInterface() : ํด๋ž˜์Šค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋“ค ์กฐํšŒ

6. System ํด๋ž˜์Šค

์‹œ์Šคํ…œ๊ณผ ๊ด€๋ จ๋œ ๊ธฐ๋ณธ ๊ธฐ๋Šฅ๋“ค์„ ์ œ๊ณตํ•œ๋‹ค

์ œ๊ณต ๋ฉ”์„œ๋“œ ์„ค๋ช…
System.currentTimeMillis() ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋ฐ€๋ฆฌ์ดˆ ๋‹จ์œ„๋กœ ์ œ๊ณต
System.nanoTime ํ˜„์žฌ ์‹œ๊ฐ„์„ ๋‚˜๋…ธ์ดˆ ๋‹จ์œ„๋กœ ์ œ๊ณตํ•œ๋‹ค
System.getenv() OS์—์„œ ์„ค์ •ํ•œ ํ™˜๊ฒฝ ๋ณ€์ˆ˜์˜ ๊ฐ’ ์กฐํšŒ
System.getProerties() ํ˜„์žฌ ์‹œ์Šคํ…œ ์†์„ฑ
System.getProperty(String key) ํŠน์ • ์†์„ฑ
System.exit(int status) ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜๊ณ , OS์— ํ”„๋กœ๊ทธ๋žจ ์ข…๋ฃŒ์˜ ์ƒํƒœ ์ฝ”๋“œ๋ฅผ ์ „๋‹ฌ
System.arraycopy ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ ์ตœ์ ํ™”๋œ ๋ฉ”๋ชจ๋ฆฌ ๋ณต์‚ฌ ์—ฐ์‚ฐ์„ ์‚ฌ์šฉ