[JAVA] Object Class

2022. 3. 25. 08:00ใ†๊ฐœ๋… ์ •๋ฆฌ ์ž‘์—…์‹ค/Java

728x90
๋ฐ˜์‘ํ˜•

 

๐Ÿš€ Object Class

    ๐Ÿ”ฝ  ๊ฐœ์š”

Object Class๋Š” ๋ชจ๋“  Class์˜ ์ตœ๊ณ  ์กฐ์ƒ์ธ ๊ฒƒ์ด์—์š”. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— Object Class์˜ Membe๋“ค์€ ๋ชจ๋“  Class์—์„œ ๋ฐ”๋กœ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์ด์—์š”.

Object Class Method explanation
protected Object clone() ๊ฐ์ฒด ์ž์‹ ์˜ ๋ณต์‚ฌ๋ณธ ๋ฐ˜ํ™˜
public boolean equals( Object obj ) ๊ฐ์ฒด ์ž”์‹ ๊ณผ ๊ฐ์ฒด obj๊ฐ€ ๊ฐ™์€ ๊ฐ์ฒด์ธ์ง€ ์•Œ๋ ค์คŒ ( ๊ฐ™์œผ๋ฉด true ๋ฐ˜ํ™˜)
protected void finalize() ๊ฐ์ฒด๊ฐ€ ์—†์–ด์งˆ ๋•Œ, ๊ฐ€๋น„์ง€ ์ปฌ๋ ‰ํ„ฐ์— ์˜ํ•ด ์ž๋™ ํ˜ธ์ถœ.
์ด ๋•Œ, ์ˆ˜ํ–‰๋˜์–ด์•ผ ํ•˜๋Š” Code๊ฐ€ ์žˆ์œผ๋ฉด Overriding ์‹ค์‹œ
(๊ฑฐ์˜ ์‚ฌ์šฉ ์•ˆํ•จ)
pugblic Class getClass() ๊ฐ์ฒด ์ž์‹ ์˜ Class ์ •๋ณด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” Class ์ธ์Šคํ„ด์Šค ๋ฐ˜ํ™˜
public int hashCode() ๊ฐ์ฒด ์ž์‹ ์˜ Hash Code ๋ฐ˜ํ™˜
public String toString() ๊ฐ์ฒด ์ž์‹ ์˜ ์ •๋ณด ๋ฌธ์ž์—ด ๋ฐ˜ํ™˜
public void notify() ๊ฐ์ฒด ์ž์‹ ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ์“ฐ๋ ˆ๋“œ ํ•˜๋‚˜๋งŒ ๊นจ์šด๋‹ค.
public void notifyAll() ๊ฐ์ฒด ์ž์‹ ์„ ์‚ฌ์šฉํ•˜๋ ค๊ณ  ๊ธฐ๋‹ค๋ฆฌ๋Š” ๋ชจ๋“  ์“ฐ๋ ˆ๋“œ๋ฅผ ๊นจ์šด๋‹ค.
public void wait()

public void wait( long timeout )

public void wait ( long timeout, int nanos )
๋‹ค๋ฅธ ์“ฐ๋ ˆ๋“œ๊ฐ€ notify(), notifyAll()์„ ํ˜ธ์ถœํ•  ๋•Œ๊นŒ์ง€ ํ˜„์žฌ ์“ฐ๋ ˆ๋“œ๋ฅผ ๋ฌดํ•œํžˆ ํ˜น์€ ์ง€์ •๋œ ์‹œ๊ฐ„( timeout, nanos )๋™์•ˆ ๊ธฐ๋‹ค๋ฆฌ๊ฒŒ ํ•œ๋‹ค.
(timout์€ ์ฒœ ๋ถ„์˜ 1์ดˆ ๊ธฐ์ค€, nanos๋Š” 10์˜ 9์Šน ๋ถ„์˜ 1์ดˆ ๊ธฐ์ค€)

 

Object Class๋Š” Member ๋ณ€์ˆ˜๋Š” ์—†๊ณ , ์˜ค์ง 11๊ฐœ์˜ Method๋งŒ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ์ด์—์š”. 

ํ•ด๋‹น Method๋“ค์€ ๋ชจ๋“  ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ฐ€์ ธ์•ผ ํ•  ๊ธฐ๋ณธ์ ์ธ ๊ฒƒ๋“ค์ด๋ž๋‹ˆ๋‹ค.

 

 

 

    ๐Ÿ”ฝ  equals( Object obj )

๋งค๊ฐœ ๋ณ€์ˆ˜๋กœ ๊ฐ์ฒด์˜ ์ฐธ์กฐ ๋ณ€์ˆ˜๋ฅผ ๋ฐ›์•„ ๋น„๊ตํ•˜์—ฌ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ boolean ๊ฐ’์œผ๋กœ ์•Œ๋ ค์ฃผ๋Š” ์—ญํ• ์„ ํ•˜๋Š” Method์ธ ๊ฒƒ์ด์—์š”.

 

์˜ˆ์ œ ์ฝ”๋“œ

public boolean equals( Object obj ) {
	return ( this == obj);
} // equals() ๋

์œ„์˜ ์˜ˆ์ œ์ฝ”๋“œ์—์„œ ๋ณด์ด๋“ฏ ๋‘ ๊ฐ์ฒด์˜ ๊ฐ™๊ณ  ๋‹ค๋ฆ„์„ ์ฐธ์กฐ ๋ณ€์ˆ˜์˜ ๊ฐ’์œผ๋กœ ํŒ๋‹จํ•˜๋Š” ๊ฒƒ์ด์—์š”.
๋•Œ๋ฌธ์— ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐ์ฒด๋ฅผ equals()๋กœ ๋น„๊ตํ•˜๋ฉด ํ•ญ์ƒ `false`์˜ ๊ฒฐ๊ณผ๋ฅผ ์–ป๊ฒŒ ๋  ๊ฒƒ์ด์—์š”.

 

์˜ˆ์ œ ์ฝ”๋“œ

class EqualsEx {
	public static void main(String[] args) {
    	Value v1 = new Value(10);
        Value v2 = new Value(10);
        
        if (v1.equals(v2)) {
        	System.out.println(v1 + " ๊ณผ " + v2 " + ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค!");
        
        } else {
        	System.out.println(v1 + " ๊ณผ " + v2 " + ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค!");
        } // if (v1.equals(v2)) - else ๋
        
        v2 = v1;
        
        if (v1.equals(v2)) {
        	System.out.println(v1 + " ๊ณผ " + v2 " + ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค!");
        
        } else {
        	System.out.println(v1 + " ๊ณผ " + v2 " + ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค!");
        } // if (v1.equals(v2)) - else ๋
    } // main ๋
} // class ๋

/** ์‹คํ–‰ ๊ฒฐ๊ณผ
* v1 ๊ณผ v2 ๋Š” ๋‹ค๋ฆ…๋‹ˆ๋‹ค!
* v1 ๊ณผ v2 ๋Š” ๊ฐ™์Šต๋‹ˆ๋‹ค!
*/

 

Value๋ผ๋Š” Member ๋ณ€์ˆ˜๋ฅผ ๊ฐ–๋Š” Value Class๋ฅผ ์ •์˜ํ•˜๊ณ , ๋‘ ๊ฐœ์˜ Value Class์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์ƒ์„ฑ(Value v1 = new Value(10);) ํ•œ ๋‹ค์Œ equals Method๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‘ ์ธ์Šคํ„ด์Šค๋ฅผ ๋น„๊ตํ•˜๋„๋ก ํ•œ ๊ฒƒ์ด์—์š”. equals Method๋Š” ์ฃผ์†Œ๊ฐ’์„ ๋น„๊ตํ•˜๋Š” ์นœ๊ตฌ์ด๊ธฐ ๋•Œ๋ฌธ์— ๋‘ Value ์ธ์Šคํ„ด์Šค์˜ Member ๋ณ€์ˆ˜ value์˜ ๊ฐ’์ด 10์œผ๋กœ ์„œ๋กœ ๊ฐ™์„์ง€๋ผ๋„ equals Method๋กœ ๋น„๊ตํ•œ ๊ฒฐ๊ณผ๋Š” `false`๊ฐ€ ๋‚˜์˜ค๋Š” ๊ฒƒ์ด์—์š”.

 

์ถœ์ฒ˜ :์ž๋ฐ”์˜ ์ •์„ P.451

 

ํ•˜์ง€๋งŒ ๋‘๋ฒˆ์งธ `v2 = v1;`์„ ์ˆ˜ํ–‰ํ–ˆ์„ ๋•Œ๋Š” ์ฐธ์กฐ ๋ณ€์ˆ˜ v2๋Š” v1์ด ์ฐธ์กฐํ•˜๊ณ  ์žˆ๋Š” ์ธ์Šคํ„ด์Šค์˜ ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— v2๋„ v1๊ณผ ๊ฐ™์€ Memory ์ฃผ์†Œ๊ฐ’์ด ์ €์žฅ๋˜๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— `true`๋ผ๋Š” ๊ฒฐ๊ณผ๊ฐ€ ๋‚˜์˜จ ๊ฒƒ์ด๋ž๋‹ˆ๋‹ค.

 

์ถœ์ฒ˜ : ์ž๋ฐ”์˜ ์ •์„ P.451

 

 

 

 

    ๐Ÿ”ฝ  hashCode()

์ด ์นœ๊ตฌ๋Š” Hashing(ํ•ด์‹ฑ) ๊ธฐ๋ฒ•์— ์ด์šฉ๋˜๋Š” `Hash Function(ํ•ด์‹ฑ ํ•จ์ˆ˜)`๋ฅผ ๊ตฌํ˜„ํ•œ ๊ฒƒ์ด์—์š”. ํ•ด์‹ฑ์€ Data ๊ด€๋ฆฌ ๊ธฐ๋ฒ• ์ค‘์˜ ํ•˜๋‚˜์ธ๋ฐ, ๋‹ค๋Ÿ‰์˜ Data๋ฅผ ์ €์žฅํ•˜๊ณ , ๊ฒ€์ƒ‰ํ•˜๋Š”๋ฐ ๋งค์šฐ ์œ ์šฉํ•œ ๊ฒƒ์ด์—์š”.

ํ•ด์‹œ ํ•จ์ˆ˜๋Š” ์ฐพ๊ณ ์ž ํ•˜๋Š” ๊ฐ’์„ ์ž…๋ ฅํ•˜๋ฉด, ๊ทธ ๊ฐ’์ด ์ €์žฅ๋œ ์œ„์น˜๋ฅผ ์•Œ๋ ค์ฃผ๋Š” `Hash Code`๋ฅผ ๋ฐ˜ํ™˜ํ•ด ์ฃผ๋Š” ์นœ๊ตฌ์ธ ๊ฒƒ์ด์—์š”.

์ผ๋ฐ˜์ ์œผ๋กœ ํ•ด์‹œ์ฝ”๋“œ๊ฐ€ ๊ฐ™์€ ๋‘ ๊ฐ์ฒด๊ฐ€ ์กด์žฌํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‚˜, Object Class์— ์ •์˜๋œ ํ•ด์‹œ ์ฝ”๋“œ Method๋Š” ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค์–ด ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— 32 Bit JVM์—์„œ ์„œ๋กœ ๋‹ค๋ฅธ ๋‘ ๊ฐ์ฒด๋Š” ๊ฒฐ์ฝ” ๊ฐ™์€ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์—†๊ณ , 64Bit JVM์—์„œ๋Š” 8 Byte ์ฃผ์†Œ๊ฐ’์œผ๋กœ ํ•ด์‹œ์ฝ”๋“œ(4 Byte)๋ฅผ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ํ•ด์‹œ์ฝ”๋“œ๊ฐ€ ์ค‘๋ณต์ด ๋  ์ˆ˜๋„ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

Class์˜ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜ ๊ฐ’์œผ๋กœ ๊ฐ์ฒด์˜ ๊ฐ™๊ณ  ๋‹ค๋ฆ„์„ ํŒ๋‹จํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋ผ๋ฉด `equals` Method ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ, `hashCode` Method๋„ ์ ์ ˆํžˆ Overridingํ•ด์•ผ ํ•˜๋Š” ๊ฒƒ์ด์—์š”.

๊ฐ™์€ ๊ฐ์ฒด๋ผ๋ฉด `hashCode` Method๋ฅผ ํ˜ธ์ถœ ํ–ˆ์„ ๋•Œ, ๊ฒฐ๊ณผ๊ฐ’์ธ ํ•ด์‹œ์ฝ”๋“œ๋„ ๊ฐ™์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์ธ ๊ฒƒ์ด์—์š”.

 

 

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
ํ•ด์‹ฑ ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋Š” HashMap, HashSet๊ณผ ๊ฐ™์€ Class์— ์ €์žฅํ•  ๊ฐ์ฒด๋ผ๋ฉด ๋ฐ˜๋“œ์‹œ hashCode Method๋ฅผ Overridingํ•ด์•ผ ํ•œ๋‹ค.

 

String Class๋Š” ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ๊ฐ™์œผ๋ฉด, ๋™์ผํ•œ ํ•ด์‹œ์ฝ”๋“œ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก hashCode Method๊ฐ€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ ๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ฌธ์ž์—ด์˜ ๋‚ด์šฉ์ด ๊ฐ™์€ str1๊ณผ str2์— ๋Œ€ํ•ด hashCode()๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ํ•ญ์ƒ ๋™์ผํ•œ ํ•ด์‹œ ์ฝ”๋“œ ๊ฐ’์„ ์–ป๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด์—์š”.

๋ฐ˜๋ฉด `System.identityHashCode( Object x )`๋Š” Objcet Class์˜ hashCode Method์ฒ˜๋Ÿผ ๊ฐ์ฒด์˜ ์ฃผ์†Œ๊ฐ’์œผ๋กœ ํ•ด์‹œ ์ฝ”๋“œ๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฐ์ฒด์— ๋Œ€ํ•ด ํ•ญ์ƒ ๋‹ค๋ฅธ ํ•ด์‹œ์ฝ”๋“œ๊ฐ’์ด ๋ฐ˜ํ™˜๋  ๊ฒƒ์ด๋ผ๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•˜๋Š” ๊ฒƒ์ด์—์š”. ๊ทธ๋ž˜์„œ str1๊ณผ str2๊ฐ€ ํ•ด์‹œ ์ฝ”๋“œ๋Š” ๊ฐ™์„ ์ˆ˜ ์žˆ์–ด๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฐ์ฒด๋ผ๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

์ฐธ๊ณ ๋กœ `System.identityHashCode( Object x )`์˜ ํ˜ธ์ถœ ๊ฒฐ๊ณผ๋Š” ์‹คํ–‰ ํ•  ๋•Œ๋งˆ๋‹ค ๋‹ฌ๋ผ์งˆ ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

 

 

 

 

 

    ๐Ÿ”ฝ  toString()

์ด ์นœ๊ตฌ๋Š” ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ `๋ฌธ์ž์—ด(String)`์œผ๋กœ ์ œ๊ณตํ•  ๋ชฉ์ ์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ Method์ธ ๊ฒƒ์ด์—์š”.

์ธ์Šคํ„ด์Šค์˜ ์ •๋ณด๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์€ ๋Œ€๋ถ€๋ถ„์˜ ๊ฒฝ์šฐ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’๋“ค์„ ๋ฌธ์ž์—ด๋กœ ํ‘œํ˜„ํ•œ๋‹ค๋Š” ๊ฒƒ์ด์—์š”.

Object Class์— ์ •์˜๋œ toString()์€ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ์„๊นŒ์š”?

Object Class์˜ toString()

Class๋ฅผ ๋งŒ๋“ค ๋•Œ, toString()์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์ง€ ์•Š๋Š”๋‹ค๋ฉด, ์œ„์™€ ๊ฐ™์€ ๋‚ด์šฉ์ด ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉ์ด ๋  ๊ฒƒ์ด์—์š”.

์ฆ‰, toString()์„ ํ˜ธ์ถœํ•˜๋ฉด Class ์ด๋ฆ„์— 16์ง„์ˆ˜์˜ ํ•ด์‹œ์ฝ”๋“œ(`Integer.toHexString(hashCode());)`๋ฅผ ์–ป๊ฒŒ ๋  ๊ฒƒ์ด์—์š”.

 

๐Ÿ’ก ์ฐธ๊ณ  ์‚ฌํ•ญ
getClass()์™€ hashCode() ์—ญ์‹œ Object Class์— ์ •์˜๋œ Method๋กœ ์ธ์Šคํ„ด์Šค ์ƒ์„ฑ์—†์ด ๋ฐ”๋กœ ํ˜ธ์ถœ ๊ฐ€๋Šฅ.

 

์˜ˆ์ œ ์ฝ”๋“œ

class Card {
	String kind;
    int number;
    
    Card() {
    	this("SPADE", 1);
    } // Card() ๋
    
    Card(String kind, int number) {
    	this.kind = kind;
        this.number = number;
    } // Card(String kind, int number) ๋
} // class ๋

class CardToString {
	public static void main(String[] args) {
    	Card c1 = new Card();
        Card c2 = new Card();
        
        System.out.println(c1.toString());
        System.out.println(c2.toString());
    } // main() ๋
} // class ๋

/** ์‹คํ–‰ ๊ฒฐ๊ณผ
* Card@34b0jdi
* Card@039ow2
*/

 

Card ์ธ์Šคํ„ด์Šค ๋‘ ๊ฐœ๋ฅผ ์ƒ์„ฑํ•œ ๋‹ค์Œ, ๊ฐ ์ธ์Šคํ„ด์Šค์— `toString()`์„ ํ˜ธ์ถœํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•œ ๊ฒƒ์ด์—์š”. Card Class์—์„œ Object Class ๋ถ€ํ„ฐ ์ƒ์†๋ฐ›์€ `toString()`์„ ์˜ค๋ฒ„๋ผ์ด๋”ฉํ•˜์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— Card ์ธ์Šคํ„ด์Šค์— `toString()`์„ ํ˜ธ์ถœํ•˜๋ฉด Object Class์˜ `toString()`์ด ํ˜ธ์ถœ๋˜์–ด 16์ง„์ˆ˜ ํ•ด์‰ฌ ์ฝ”๋“œ์™€ Class ์ด๋ฆ„์ด ํ˜ธ์ถœ๋˜๊ฒŒ ๋œ ๊ฒƒ์ด์—์š”. ์„œ๋กœ ๋‹ค๋ฅธ ์ธ์Šคํ„ด์Šค์— ๋Œ€ํ•ด์„œ `toString()`์„ ํ˜ธ์ถœํ•˜์˜€๊ธฐ ๋•Œ๋ฌธ์— Class์˜ ์ด๋ฆ„์ด ๊ฐ™์•„๋„ ํ•ด์‹œ ์ฝ”๋“œ๊ฐ’์ด ๋‹ค๋ฅด๋‹ค๋Š” ๊ฒƒ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์—์š”.

๋Œ€๋ถ€๋ถ„ `toString()`์€ ์˜ค๋ฒ„๋ผ์ด๋”ฉ์„ ํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋“ค์˜ ๊ฐ’์„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•˜์—ฌ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ๋งŒ๋“ค์–ด ์ฃผ๋Š” ๊ฒƒ์ด์—์š”.
๊ทธ๋ž˜์•ผ ์‚ฌ๋žŒ์ด ์ดํ•ด๋ฅผ ํ•  ์ˆ˜ ์žˆ์„ํ…Œ๋‹Œ๊นŒ์š”!

 

์˜ˆ์ œ ์ฝ”๋“œ

class Card {
	String kind;
    int number;
    
    Card() {
    	this("SPADE", 1);	// Card(String kind, int number) ํ˜ธ์ถœ
    } // Card() ๋
    
    Card(String Kind, int number) {
    	this.kind = kind;
        this.number = number;
    } // Card(String Kind, int number) ๋
    
    @Overriding
    public String toString() {
    	return "kind : " + kind + ", number : " + number;	// ์ธ์Šคํ„ด์Šค์˜ Kind์™€ Number ๋ฌธ์ž์—ด๋กœ ๋ฐ˜ํ™˜
    } // toString() ๋
} // class ๋

class CardToString2 {
	public static void main(String[] args) {
    	
        Card c1 = new Card();
        Card c2 = new Card("HEART", 10);
        
        System.out.println(c1.toString());
        System.out.println(c2.toString());
    }	// main() ๋
} // class ๋

 

 

 

ํ•ด๋‹น ์ž๋ฃŒ๋Š” `์ž๋ฐ”์˜ ์ •์„`์„ ํ† ๋Œ€๋กœ ์ž‘์„ฑ ๋˜์—ˆ์Œ์„ ์•Œ๋ ค ๋“œ๋ฆฝ๋‹ˆ๋‹ค!

 

 

 

 

 

728x90
๋ฐ˜์‘ํ˜•