๋ชจ๋“  Object ํด๋ž˜์Šค ๋ฉ”์„œ๋“œ ๋ฐ toString() ๋ฉ”์„œ๋“œ์— ๋Œ€ํ•œ ์ถ”๊ฐ€ ์ •๋ณด - 1

"์•ˆ๋…•, ์•„๋ฏธ๊ณ !"

"์•ˆ๋…•!"

"์˜ค๋Š˜ ์šฐ๋ฆฌ๋Š” Object ํด๋ž˜์Šค๋ฅผ ๊ณต๋ถ€ํ•  ๊ฒƒ์ž…๋‹ˆ๋‹ค.
๋‹น์‹ ์€ ์ด๋ฏธ ๊ทธ๊ฒƒ์„ ์ ‘ํ–ˆ๊ณ  Object๊ฐ€ ๋ชจ๋“  ํด๋ž˜์Šค์˜ ๊ธฐ๋ณธ ํด๋ž˜์Šค๋ผ๋Š” ๊ฒƒ์„ ์•Œ๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์‹ค์งˆ์ ์œผ๋กœ ๋ฐ์ดํ„ฐ๋Š” ์—†์ง€๋งŒ ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."

"๋ฉ”์†Œ๋“œ๊ฐ€ ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฌด์—‡์ž…๋‹ˆ๊นŒ? Object ํด๋ž˜์Šค์˜ ์ธ์Šคํ„ด์Šค๋ฅผ ์‹ค์ œ๋กœ ์ƒ์„ฑํ•˜๋Š” ์‚ฌ๋žŒ์ด ์žˆ์Šต๋‹ˆ๊นŒ?"

"์ด๋ ‡๊ฒŒ ๋ณด์„ธ์š”. Object ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๊ณตํ†ต์ ์ž…๋‹ˆ๋‹ค. ์ฆ‰, Java ์ž‘์„ฑ์ž๋Š” ๋ชจ๋“  ํด๋ž˜์Šค์— ์žˆ์–ด์•ผ ํ•˜๋Š” ๋ช‡ ๊ฐ€์ง€ ๋ฉ”์„œ๋“œ๋ฅผ ์‹๋ณ„ํ•˜์—ฌ Object ํด๋ž˜์Šค์— ์ถ”๊ฐ€ํ–ˆ์Šต๋‹ˆ๋‹ค."

"๋‹คํ˜•์„ฑ(ํŒŒ์ƒ ํด๋ž˜์Šค์—์„œ Object ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ๋ฅผ ์žฌ์ •์˜ํ•˜๋Š” ๊ธฐ๋Šฅ)๊ณผ ๊ฒฐํ•ฉํ•˜๋ฉด ๋งค์šฐ ๊ฐ•๋ ฅํ•œ ๋„๊ตฌ๊ฐ€ ๋ฉ๋‹ˆ๋‹ค."

"์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์ด ๋ฌด์—‡์ธ์ง€ ๋ด…์‹œ๋‹ค:"

๋ฐฉ๋ฒ• ์„ค๋ช…
public String toString()
๊ฐœ์ฒด์˜ ๋ฌธ์ž์—ด ํ‘œํ˜„์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
public native int hashCode()
public boolean equals(Object obj)
๊ฐœ์ฒด๋ฅผ ๋น„๊ตํ•˜๋Š” ๋ฐ ์‚ฌ์šฉ๋˜๋Š” ํ•œ ์Œ์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
public final native Class getClass()
ํ˜„์žฌ ํด๋ž˜์Šค๋ฅผ ์„ค๋ช…ํ•˜๋Š” ํŠน์ˆ˜ ๊ฐœ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.
public final native void notify()
public final native void notifyAll()
public final native void wait(long timeout)
public final void wait(long timeout, intnanos)
public final void wait()
๋‹ค๋ฅธ ์Šค๋ ˆ๋“œ์—์„œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์•ก์„ธ์Šค๋ฅผ ์ œ์–ดํ•˜๋Š” โ€‹โ€‹๋ฐฉ๋ฒ•. ์Šค๋ ˆ๋“œ ๋™๊ธฐํ™”์šฉ.
protected void finalize()
์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ํŒŒ์ผ ๋‹ซ๊ธฐ, ์ŠคํŠธ๋ฆผ ๋“ฑ์˜ ๋„ค์ดํ‹ฐ๋ธŒ ๋น„ Java ๋ฆฌ์†Œ์Šค๋ฅผ ํ•ด์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
protected native Object clone()
์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๊ฐœ์ฒด๋ฅผ ๋ณต์ œํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐœ์ฒด์˜ ๋ณต์ œ๋ณธ์„ ๋งŒ๋“ญ๋‹ˆ๋‹ค.

"์ด๋Ÿฌํ•œ ๋ฐฉ๋ฒ•์€ 6๊ฐœ์˜ ๊ทธ๋ฃน์œผ๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹น์‹ ์€ ์ด๋ฏธ ๊ทธ ์ค‘ ์ผ๋ถ€์— ์ต์ˆ™ํ•˜๋ฉฐ ๋‚˜๋จธ์ง€๋Š” ๋‹ค์Œ ๋‹จ์›์—์„œ ์•Œ๊ฒŒ ๋  ๊ฒƒ์ž…๋‹ˆ๋‹ค."

"์–ด๋–ค ์ด์œ ์—์„œ์ธ์ง€ ์—ฌ๊ธฐ์„œ ์œ ์šฉํ•œ ์ •๋ณด๊ฐ€ ๋ณด์ด์ง€ ์•Š์Šต๋‹ˆ๋‹ค."

"์•„๋ฏธ๊ณ ! ์ด ๋ฉ”์„œ๋“œ๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์•˜๋‹ค๋ฉด ๋ชจ๋“  ๋‹จ์ผ ๊ฐœ์ฒด์— ์ถ”๊ฐ€ํ•˜์ง€ ์•Š์•˜์„ ๊ฒƒ์ž…๋‹ˆ๋‹ค! ๋”ฐ๋ผ์„œ ์ด๊ฒƒ์ด ๋ฌด์—‡์ด๋ฉฐ ์™œ ํ•„์š”ํ•œ์ง€ ๋” ์ž์„ธํžˆ ์‚ดํŽด๋ณด๋ผ๊ณ  ์กฐ์–ธํ•ฉ๋‹ˆ๋‹ค. ์ค‘์š”ํ•˜์ง€ ์•Š์€ ๊ฒƒ ๊ฐ™์œผ๋ฉด , ๊ทธ๋ ‡๋‹ค๋ฉด ๋‹น์‹ ์€ ๋ฌด์–ธ๊ฐ€๋ฅผ ์ดํ•ดํ•˜์ง€ ๋ชปํ–ˆ๊ฑฐ๋‚˜ ๋ฌด์–ธ๊ฐ€๋ฅผ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ž…๋‹ˆ๋‹ค."

"์•Œ๊ฒ ์Šต๋‹ˆ๋‹ค. ์ž˜ ๋“ฃ๊ฒ ์Šต๋‹ˆ๋‹ค."

"toString() ๋ฉ”์„œ๋“œ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๊ฒ ์Šต๋‹ˆ๋‹ค.

"์ด ๋ฐฉ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ๋ชจ๋“  ๊ฐœ์ฒด์— ๋Œ€ํ•œ ํ…์ŠคํŠธ ์„ค๋ช…์„ ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. Object ํด๋ž˜์Šค์—์„œ์˜ ๊ตฌํ˜„์€ ๋งค์šฐ ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค."

return getClass().getName() + "@" + Integer.toHexString(hashCode());

"getClass() ๋ฐ hashCode()๋„ Object ํด๋ž˜์Šค์˜ ๋ฉ”์„œ๋“œ์ž…๋‹ˆ๋‹ค.
์ด ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์ผ๋ฐ˜์ ์œผ๋กœ ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๊ฒฐ๊ณผ๊ฐ€ ์ƒ์„ฑ๋ฉ๋‹ˆ๋‹ค."

java.lang.Object@12F456

"๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋Ÿฐ ์„ค๋ช…์ด ๋ฌด์Šจ ์†Œ์šฉ์ด ์žˆ๊ฒ ์Šต๋‹ˆ๊นŒ?"

"์ด ์„ค๋ช…์„ ํ†ตํ•ด ๋ฉ”์„œ๋“œ๊ฐ€ ํ˜ธ์ถœ๋œ ๊ฐœ์ฒด์˜ ํด๋ž˜์Šค๋ฅผ ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ๊ฐœ์ฒด๋ฅผ ๊ตฌ๋ณ„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ๊ฐœ์ฒด๋Š” @ ๊ธฐํ˜ธ ๋’ค์— ๋‹ค๋ฅธ ์ˆซ์ž๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ ์ด ๋ฉ”์„œ๋“œ์˜ ์‹ค์ œ ๊ฐ€์น˜๋Š” ๋‹ค๋ฅธ ๊ณณ์— ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฉ”์„œ๋“œ๋Š” ๋” ์ž์„ธํ•˜๊ฑฐ๋‚˜ ์ ํ•ฉํ•œ ๊ฐœ์ฒด ์„ค๋ช…์„ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ์œ„ํ•ด ๋ชจ๋“  ํด๋ž˜์Šค์—์„œ ๋ฎ์–ด์“ธ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค."

"ํ•˜์ง€๋งŒ ๋” ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ ๊ฐœ์ฒด์˜ ํ…์ŠคํŠธ ํ‘œํ˜„์„ ์–ป์„ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— Java๋Š” ๋ฌธ์ž์—ด์„ ๊ฐœ์ฒด์— '์ถ”๊ฐ€'ํ•˜๋Š” ์ง€์›์„ ๊ตฌํ˜„ํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ–ˆ์Šต๋‹ˆ๋‹ค. ํ™•์ธํ•˜์‹ญ์‹œ์˜ค.
"

์•”ํ˜ธ ์‹ค์ œ๋กœ ์ผ์–ด๋‚˜๋Š” ์ผ
int age = 18;
System.out.println("Age is " + age);

String s = String.valueOf(18);
String result = "Age is " + s;
System.out.println(result);
Student st = new Student("Vincent");
System.out.println("Student is " + st);

Student st = new Student("Vincent");
String result = "Student is " + st.toString();
System.out.println(result);
Car car = new Porsche();
System.out.println("My car is " + car);

Car car = new Porsche();
String result = "My car is " + car.toString();
System.out.println(result);

"์˜ˆ, ์ €๋Š” ์ด๊ฒƒ์„ ์ •๊ธฐ์ ์œผ๋กœ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ํŠนํžˆ ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜๊ฑฐ๋‚˜ ๋ฒ„๊ทธ๋ฅผ ์ฐพ์„ ๋•Œ ์œ ์šฉํ•ฉ๋‹ˆ๋‹ค. ์œ ์šฉํ•œ ์ž‘์—…์ž…๋‹ˆ๋‹ค."