SlideShare a Scribd company logo
Java(1/4)
taesoo.kim87@gmail.com ๊น€ํƒœ์ˆ˜
Part1. Basic
1) ์ž๋ฐ”
1 ๊ฐœ์š”
์ž๋ฐ” OOP(๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ)์–ธ์–ด
์ž๋ฐ” ํŠน์ง• ์บก์Аํ™”/์ƒ์†/๋‹คํ˜•์„ฑ/ํ•จ์ˆ˜์ ์Šคํƒ€์ผ์ฝ”๋”ฉ์ง€์›/๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ:GC
SE๋ฒ„์ „ JDKํ•„์š”, ๊ธฐ๋ณธ์—๋””์…˜, ๊ฐœ๋ฐœ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌAPI์ •์˜
EE๋ฒ„์ „
๋ถ„์‚ฐํ™˜๊ฒฝ(NW,Internet)์˜ Server์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ฐœ๋ฐœ๋„๊ตฌ
๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌAPI์ •์˜
๊ฐ•์  ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ตฌํ˜„/๋™์ ๋กœ๋”ฉ/์˜คํ”ˆ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ
JVM ์ž๋ฐ”ํ”„๋กœ๊ทธ๋žจ์ด OS์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋ ค๋ฉด ํ•„์š”.
์ปดํŒŒ์ผ๋‹จ๊ณ„
์†Œ์ŠคํŒŒ์ผ(.java)->๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ(.class)
->jvm๊ตฌ๋™->OS์— ๋งž๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ->์‹คํ–‰
1 ๊ฐœ์š”
2)ํ™˜๊ฒฝ๊ตฌ์ถ•, ๊ธฐ๋ณธ๊ทœ์น™, ๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด
ํ™˜๊ฒฝ๊ตฌ์ถ•
JRE JVM+Std Class Lib
JDK JRE+๊ฐœ๋ฐœ๋„๊ตฌ
ํ™˜๊ฒฝ๋ณ€์ˆ˜1 JAVA_HOME์— jdk๋””๋ ‰ํ† ๋ฆฌ๊ฐ’ ์„ค์ •
ํ™˜๊ฒฝ๋ณ€์ˆ˜2 Path์— %JAVA_HOME%bin ์ถ”๊ฐ€
API Docs http://docs.oracle.com/javase/8/docs/api/
๊ธฐ๋ณธ๊ทœ์น™
์ฃผ์„ํ˜•ํƒœ // ๋˜๋Š” /* */
๋ณ€์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์˜๋ฏธ, int a; ํ˜•ํƒœ, ๋Œ€/์†Œ๋ฌธ์ž๊ตฌ๋ถ„
๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด
๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด(ํ‘œ๊ธฐ) t n r " '  u16์ง„์ˆ˜
๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด(๊ฐ’) ์ˆ˜ํ‰ํƒญ ์ค„๋ฐ”๊ฟˆ ๋ฆฌํ„ด ํฐ๋”ฐ์˜ดํ‘œ ์ž‘์€๋”ฐ์˜ดํ‘œ ์Šฌ๋Ÿฌ์‰ฌ 16์ง„์ˆ˜์œ ๋‹ˆ์ฝ”๋“œ
1 ๊ฐœ์š”
3)ํƒ€์ž…๋ณ€ํ™˜, ์—ฐ์‚ฐ์ž
์˜ˆ์‹œ byte->int ํ˜น์€ ๊ทธ ์—ญ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ–‰์œ„.
์ข…๋ฅ˜ ์ž๋™(๋ฌต์‹œ์ ) / ๊ฐ•์ œ(๋ช…์‹œ์ )
์ž๋™ํƒ€์ž…๋ณ€ํ™˜
(ํ”„๋กœ๋ชจ์…˜)
ํฐํƒ€์ž…=์ž‘์€ํƒ€์ž… ์˜ ๊ฒฝ์šฐ.
[ byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) ]
๊ฐ•์ œํƒ€์ž…๋ณ€ํ™˜
(์บ์ŠคํŒ…)
์ž‘์€ํƒ€์ž… = (์ž‘์€ํƒ€์ž…)ํฐํƒ€์ž… ์˜ ๊ฒฝ์šฐ.
์—ฐ์‚ฐ์ž์šฐ์„ ์ˆœ์œ„
(๋†’->๋‚ฎ)
์ฆ๊ฐ,๋ถ€ํ˜ธ,~, !, ์‚ฐ์ˆ , ์‰ฌํ”„ํŠธ, ๋น„๊ต, ๋…ผ๋ฆฌ, ์กฐ๊ฑด, ๋Œ€์ž…
๋ฌธ์ž์—ด ๋น„๊ต
์˜ค๋ฅ˜ ์˜ˆ
String str1="A";
String str2="A";
String str3=new String("A");
str1==str2 //true,
str2==str3 //false
์ž๋ฐ”๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ๋™์ผํ• ๋•Œ, ๋™์ผํ•œ
String๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ, new์—ฐ์‚ฐ์ž๋กœ ์ƒ
์„ฑ๋œ ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด String๊ฐ์ฒด์˜ ๋ฒˆ์ง€๊ฐ’์„ ๊ฐ–
๊ฒŒ๋˜๋ฉฐ, ==๋น„๊ต์—ฐ์‚ฐ์€ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š”
๋ฒˆ์ง€๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ
์ถœ๋ ฅํ•จ
1 ๊ฐœ์š”
4)์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ
if๋ฌธ ํ˜•ํƒœ if(์กฐ๊ฑด์‹){true์ผ๊ฒฝ์šฐ;}false์ผ๊ฒฝ์šฐ;
if-else๋ฌธ ํ˜•ํƒœ if(์กฐ๊ฑด์‹){true์ผ๊ฒฝ์šฐ;}else{false์ผ๊ฒฝ์šฐ;}
if-elseif๋ฌธ ํ˜•ํƒœ
if(์กฐ๊ฑด์‹A){A๊ฐ€ true์ผ๊ฒฝ์šฐ;}else if(์กฐ๊ฑด์‹B){B๊ฐ€ true์ผ๊ฒฝ์šฐ;}๊ทธ
์™ธ์˜๊ฒฝ์šฐ;
switch๋ฌธ ํ˜•ํƒœ
switch(๋ณ€์ˆ˜){
case ๊ฐ’1:๋ณ€์ˆ˜==๊ฐ’1์ธ๊ฒฝ์šฐ;break;
case ๊ฐ’2:๋ณ€์ˆ˜==๊ฐ’2์ธ๊ฒฝ์šฐ;break;
default:๊ฐ’1๋„,๊ฐ’2๋„ ์•„๋‹๊ฒฝ์šฐ;}
for๋ฌธ ํ˜•ํƒœ for(์ดˆ๊ธฐํ™”์‹;์กฐ๊ฑด์‹;์ฆ๊ฐ์‹){์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;}
while๋ฌธ ํ˜•ํƒœ while(์กฐ๊ฑด์‹){์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;}
do-while๋ฌธ ํ˜•ํƒœ do{์ฒซ1ํšŒ๋ฌด์กฐ๊ฑด์‹คํ–‰ํ›„ ์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;}while(์กฐ๊ฑด์‹);
continue๋ฌธ 1ํšŒ skip
break๋ฌธ ๊ฐ€์žฅ๊ฐ€๊นŒ์šด๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœ
Part2. Memory
2 Memory
1)ClassLoader
๊ฐœ์š”
์ž๋ฐ”๋Š” ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ ,
ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์–ธ์ œ JVM์œผ๋กœ ๋กœ๋”ฉํ•˜๊ณ ,
์–ธ๋กœ๋”ฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํŠน์ •ํ•œ ๊ทœ์น™์„ ๊ฐ–๊ณ  ์žˆ๋‹ค.
์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ดํ•ดํ•ด์•ผ, ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ข€ ๋” ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ
๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž์‹ ๋งŒ์˜ ์ปค์Šคํ…€ ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.
์‚ฌ์šฉ์˜ˆ์ œ
ClassLoader cl = . . . // ClassLoader์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
Class klass = null;
try {
klass = cl.loadClass("java.util.Date");
} catch(ClassNotFoundException ex) {
// ํด๋ž˜์Šค๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•œ๋‹ค.
ex.printStackTrace();
}
๊ด€๊ณ„๋„
2 Memory
2)๋™์ ๋กœ๋”ฉ
๊ฐœ์š”
์ž๋ฐ”๋Š” ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด์˜จ๋‹ค. ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ JVM์— ๋งํฌ๋œ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค
๋Š” ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์ฐธ์กฐ๋˜๋Š” ์ˆœ๊ฐ„์— ๋™์ ์œผ๋กœ JVM์— ๋งํฌ๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋œ๋‹ค. ์ž๋ฐ”์˜ ๋Ÿฐํƒ€
์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ([JDK ์„ค์น˜ ๋””๋ ‰ํ† ๋ฆฌ]/jre/lib/rt.jar) ์—ญ์‹œ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ ์ธ ํด๋ž˜
์Šค ๋กœ๋”ฉ์€ ์ž๋ฐ”์˜ ํด๋ž˜์Šค๋กœ๋” ์‹œ์Šคํ…œ์„ ํ†ตํ•ด์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ž๋ฐ”๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜
์Šค๋กœ๋”๋Š” java.lang.ClassLoader๋ฅผ ํ†ตํ•ด์„œ ํ‘œํ˜„๋œ๋‹ค. JVM์ด ์‹œ์ž‘๋˜๋ฉด, ๋ถ€ํŠธ์ŠคํŠธ๋žฉ
(bootstrap) ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ํด๋ž˜์Šค์ธ Object๋ฅผ ์‹œ์Šคํ…œ์— ์ฝ
์–ด์˜จ๋‹ค.
๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋‹ค๋Š” ๊ฒƒ์€ JVM์ด ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š”
๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, JVM์€ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ์ƒ์†๊ด€๊ณ„ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ
๋ผ์„œ, ํด๋ž˜์Šค๋กœ๋”๋Š” ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ตฌํ•˜๊ณ , ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€๋ฅผ ๊ฒ€์‚ฌํ• 
์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, JVM์€ .class ํŒŒ์ผ์˜ ๋ฒ„์ „์ด ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ
๋ฉฐ, ๋˜ํ•œ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. JVM์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š”
๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, JDK 1.1๋ถ€ํ„ฐ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์„ ํ†ตํ•ด์„œ ์ด๋Ÿฌํ•œ ํด๋ž˜
์Šค์˜ ๋ถ„์„์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค.
๋กœ๋“œํƒ€์ž„ ๋™์  ๋กœ๋”ฉ
(load-time dynamic
loading)
ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ํด๋ž˜์Šค.
ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋กœ๋“œํƒ€์ž„ ๋™์  ๋กœ๋”ฉ์ด๋ผ
๊ณ  ํ•œ๋‹ค.
๋Ÿฐํƒ€์ž„ ๋™์  ๋กœ๋”ฉ
(run-time dynamic
loading)
ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„์— ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋Ÿฐํƒ€์ž„ ๋™์  ๋กœ๋”ฉ
์ด๋ผ๊ณ  ํ•œ๋‹ค.
2 Memory
3)DataType, ๋ฉ”๋ชจ๋ฆฌํ• ๋‹น, RDA
Data-Type
๋ถ„๋ฅ˜ Primitive / Reference
Primitive Type(๊ธฐ๋ณธํ˜•)
์ •์ˆ˜(byte/char/short/int/long), ์‹ค์ˆ˜(float/double),
๋…ผ๋ฆฌ(boolean)
Reference Type(์ฐธ์กฐํ˜•) ๋ฐฐ์—ดํƒ€์ž…/์—ด๊ฑฐํƒ€์ž…/ํด๋ž˜์Šค/์ธํ„ฐํŽ˜์ด์Šค
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น
๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋ถ„๋ฅ˜ Stack , Heap
์ฐธ์กฐํƒ€์ž…๋ณ€์ˆ˜ Heap์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ
๊ธฐ๋ณธํƒ€์ž…๋ณ€์ˆ˜ Stack์˜์—ญ์— ๊ฐ’ ์ €์žฅ
Runtime Data Area(RDA)
๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ˆœ์„œ java.exe -> JVM์‹คํ–‰ ->OS๊ฐ€ JVM์— ๋ฉ”๋ชจ๋ฆฌ(RDA)ํ• ๋‹น
๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ ๋ฉ”์†Œ๋“œ์˜์—ญ/ํž™์˜์—ญ/(n๊ฐœ์˜)์Šค๋ ˆ๋“œ
๋ฉ”์†Œ๋“œ ์˜์—ญ
class, runtime constant pool, field, method ๋ฐ์ดํ„ฐ, method code, ์ƒ์„ฑ์ž ๋“ฑ์„
๋ถ„๋ฅ˜ ์ €์žฅ.
JVM์ด ์‹œ์ž‘๋ ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ
ํž™ ์˜์—ญ
๊ฐ์ฒด,๋ฐฐ์—ด์ƒ์„ฑ ์˜์—ญ. ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด JVM์Šคํƒ์˜์—ญ์—์„œ
์ฐธ์กฐ. GC๋Š” ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ์“ฐ๋ ˆ๊ธฐ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ์ œ๊ฑฐ.
JVM ์Šคํƒ ์˜์—ญ
๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌ. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋ ๋•Œ ํ• ๋‹น.
๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋งˆ๋‹ค Frame์„ pushํ•˜๊ณ , ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด pop์ˆ˜ํ–‰. ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๋กœ์ปฌ ๋ณ€์ˆ˜ ์Šค
ํƒ์ด ์žˆ๊ณ ,๊ธฐ๋ณธํƒ€์ž…/์ฐธ์กฐํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ push/pop๋จ.
2 Memory
4)์ฐธ์กฐ๋ณ€์ˆ˜๋น„๊ต์™€ null, String, ๋ฐฐ์—ดํƒ€์ž…
์ฐธ์กฐ๋ณ€์ˆ˜ ๋น„๊ต์™€ null
์ฐธ์กฐํƒ€์ž…๋ณ€์ˆ˜ ๋น„๊ต์—ฐ์‚ฐ ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ„ ==, != ๋Š” ์ฃผ์†Œ๊ฐ’ ๋น„๊ต
null
๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š์œผ๋ฉด ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” null์„ ๋ฐ˜ํ™˜, null๊ฐ’์œผ๋กœ
์ดˆ๊ธฐํ™” ํ•˜๋ฉด, ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” ์Šคํƒ์˜์—ญ์— ์ƒ์„ฑ๋จ.
NullPointerException ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ null๊ฐ’์„ ๊ฐ€์ง€๊ณ ์žˆ์„๋•Œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐœ์ƒ.
String
equals ์‚ฌ์šฉ์˜ˆ : str1.equals(str2);
์ฐธ์กฐ๋ฅผ ์žƒ์„ ๊ฒฝ์šฐ String๊ฐ์ฒด๊ฐ€ null๊ฐ’์ผ๋•Œ, GC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋จ.
๋ฐฐ์—ด ํƒ€์ž…
๊ฐœ์š” ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๊ณต๊ฐ„์— ๋‚˜์—ด์‹œํ‚ค๊ณ  index๋ฅผ ๋ถ€์—ฌ.
์„ ์–ธ ํƒ€์ž…[] ๋ณ€์ˆ˜; ํƒ€์ž… ๋ณ€์ˆ˜[];
null์ดˆ๊ธฐํ™” ํƒ€์ž…[] ๋ณ€์ˆ˜=null;
๊ฐ’๋ชฉ๋ก ๋ฐฐ์—ด ์ƒ์„ฑ ํƒ€์ž…[] ๋ณ€์ˆ˜={val1, val2,โ€ฆ};
๋ฐฐ์—ด๊ธธ์ด ๋ฐฐ์—ด๋ณ€์ˆ˜.length; //์ฝ๊ธฐ์ „์šฉ์ด๋ฉฐ, ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ.
๋ฐฐ์—ด๊ฐ„ ๋ณต์‚ฌ
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); //oldArr, 0, new
Arr, 0, oldArr.length
๋˜๋Š” for๋ฌธ์œผ๋กœ ๋ณต์‚ฌ
new์—ฐ์‚ฐ์ž ์‚ฌ์šฉ
(new์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„
์ดˆ๊ธฐํ™”ํ•˜๋ฏ€๋กœ,
int๋ฐฐ์—ด์—์„œ ๊ฐ ํž™ ์˜์—ญ์„
์ฐธ์กฐํ•˜๋ฉด 0์„ ๋ฐ˜ํ™˜)
๋ณ€์ˆ˜=new ํƒ€์ž…[]{a,b,c};
ํƒ€์ž…[] ๋ณ€์ˆ˜=new ํƒ€์ž…[size];
int arr=new int[5];
int[] scores;
scores=new int[]{1,2,3};
2 Memory
5)์ปค๋งจ๋“œ๋ผ์ธ์ž…๋ ฅ,์—ด๊ฑฐํƒ€์ž…,Calendarํด๋ž˜์Šค
์ปค๋งจ๋“œ ๋ผ์ธ ์ž…๋ ฅ
String[] args={}; ์ด ๊ฐ’์ด ์„ค์ •๋˜๋ฉด mian()๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋จ.
์—ด๊ฑฐ ํƒ€์ž…
๊ฐœ์š” ํ•œ์ •๋œ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…(enum)
์„ ์–ธ์˜ˆ์‹œ public enum week{mon, tue, wed, thu, fri, sat, sun}
์‚ฌ์šฉ์˜ˆ์‹œ
week thisWeek; //์„ ์–ธ
thisWeek.mon; //ํ˜ธ์ถœ
week thisWeek=week.sun;//๊ฐ™์€ ๊ฐ์ฒด ์ฐธ์กฐ
week birth=null;
Calendar ํด๋ž˜์Šค
์„ ์–ธ์˜ˆ์‹œ Calendar now = Calendar.getInstance();
์‚ฌ์šฉ์˜ˆ์‹œ int year=now.get(Calendar.YEAR);
2 Memory
6)์—ด๊ฑฐ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ
๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ //์„ค๋ช…
String
name() //๋ฌธ์ž์—ด ๋ฆฌํ„ด
week today = week.sun;
String name=today.name();//sun ๋ฆฌํ„ด
int
ordinal()//์—ด๊ฑฐ ๊ฐ์ฒด์˜ ์ˆœ๋ฒˆ(0๋ฒˆ๋ถ€ํ„ฐ)์„ ๋ฆฌํ„ด
week today=week.sun;
int ordinal = today.ordinal();//sun์˜ ์ธ๋ฑ์Šค 6์„ ๋ฆฌํ„ด
int
compareTo() //์—ด๊ฑฐ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•ด์„œ ์ˆœ๋ฒˆ์ฐจ์ด๋ฅผ ๋ฆฌํ„ด
week day1=week.mon;
week day2=week.wed;
int result1=day1.compareTo(day2);//-2
int result2=day2.compareTo(day1);//-2
์—ด๊ฑฐ ํƒ€์ž…
valuesOf(String name)//์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ์—ด๊ฑฐ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด
week day=week.valueOf("sat");//day๊ฐ€ week.sat๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ๋จ
Part3. OOP
3 OOP
1)OOP ๊ฐœ๊ด„
๊ฐ์ฒด
์‹ค์žฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ,
์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์‹๋ณ„๋˜๋Š” ๊ฒƒ.
(symbolic์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ. ์˜ˆ๋ฅผ ๋“ค๋ฉด
๋Œ€ํ•œ๋ฏผ๊ตญ์„ ์ถ”์ƒํ™”ํ•ด์„œ ํƒœ๊ทน๊ธฐ๋กœ ํ‘œํ˜„)
๊ฐ์ฒด์˜ ํŠน์ง• ์†์„ฑ๊ณผ ๋™์ž‘(ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ)์„ ์ง€๋‹˜.
๊ฐ์ฒด์˜ ์ƒํ˜ธ์ž‘์šฉ ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ๋กœ ์„ฑ๋ฆฝ
๊ฐ์ฒด๊ด€๊ณ„ ์ข…๋ฅ˜ ์ง‘ํ•ฉ/์‚ฌ์šฉ/์ƒ์†
์‚ฌ์šฉ๊ด€๊ณ„ ๊ฐ์ฒด๊ฐ„ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์˜ ์ƒํ˜ธ์ž‘์šฉ
์ƒ์†๊ด€๊ณ„ ์ƒ์œ„๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์œ„๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ
์ง‘ํ•ฉ๊ด€๊ณ„ ์ž๋™์ฐจ๋Š” ์—”์ง„/ํƒ€์ด์–ด/ํ•ธ๋“ค๋“ฑ๊ณผ ์ง‘ํ•ฉ๊ด€๊ณ„
OOP์˜ ํŠน์ง• ์บก์Аํ™”/์ƒ์†/๋‹คํ˜•์„ฑ
์บก์Аํ™”
๊ฐ์ฒด์˜ ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ ,
์‹ค์ œ ๊ตฌํ˜„๋‚ด์šฉ์„ ๊ฐ์ถค
์ƒ์†
์ƒ์œ„๊ฐ์ฒด์˜ ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜์œ„๊ฐ์ฒด๊ฐ€
์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ.
๋‹คํ˜•์„ฑ
(Polymorphism)
๊ฐ™์€ ํƒ€์ž…์ด์ง€๋งŒ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•œ
๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ.
๊ฐ์ฒด์™€ ํด๋ž˜์Šค ํด๋ž˜์Šค(์„ค๊ณ„๋„)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด;๊ฑด๋ฌผ ๋“ฑ)๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ.
ํด๋ž˜์Šค ๊ตฌ์„ฑ๋ฉค๋ฒ„ ํ•„๋“œ/์ƒ์„ฑ์ž/๋ฉ”์†Œ๋“œ
3 OOP
2)Class
ํ•„๋“œ ์ƒํƒœ/๊ณ ์œ ์ •๋ณด/๊ฐ์ฒด๋ฅผ ์ €์žฅ
์ƒ์„ฑ์ž
new์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœ.
ํ•„๋“œ์ดˆ๊ธฐํ™”์™€ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ
๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ ์ค€๋น„.
๋ฆฌํ„ดํƒ€์ž…์ด ์—†์Œ.
๋ฉ”์†Œ๋“œ ๊ฐ์ฒด๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ.
ํ•„๋“œ ์ดˆ๊ธฐํ™”
public class korean{
String nation="ํ•œ๊ตญ";
}
์ƒ์„ฑ์ž์—์„œ ํ•„๋“œ ์ดˆ๊ธฐํ™”
pblic korean(String m){
nation=m;
}
์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ
(OverLoading)
์ด๋ฆ„์€ ๊ฐ™๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ
์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ.
์ƒ์„ฑ์ž์—์„œ this
๋‹ค๋ฅธ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ.
์ƒ์„ฑ์ž ์ฒซ์ค„์—์„œ๋งŒ ํ—ˆ์šฉ.
์‹œ๊ทธ๋‹ˆ์ณ ๋ฉ”์†Œ๋“œ ์„ ์–ธ๋ถ€. String toString(int a)
๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ
๋™์ผ ํด๋ž˜์Šค ๋‚ด ๋™์ผ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ
์‹œ๊ทธ๋‹ˆ์ณ๋ฅผ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ ์„ ์–ธ.
์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„
๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)์ƒ์„ฑํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”
์ธ์Šคํ„ด์Šคํ•„๋“œ์™€ ์ธ์Šคํ„ด์Šค๋ฉ”์†Œ๋“œ๋ฅผ ๋งํ•จ.
์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ this ๋‚ด๋ถ€๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด this๋ฅผ ์‚ฌ์šฉ
3 OOP
3)์ •์ ๋ฉค๋ฒ„ , Singleton
์ •์ ๋ฉค๋ฒ„/static
์ •์ ๋ฉค๋ฒ„
(ํด๋ž˜์Šค๋ฉค๋ฒ„)
๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ•„๋“œ/๋ฉ”์†Œ๋“œ
์ •์  ํ•„๋“œ ๋ฉค๋ฒ„ ์„ ์–ธ static ํƒ€์ž… ํ•„๋“œ; ๋˜๋Š” static ํƒ€์ž… ํ•„๋“œ=a;
์ •์  ํ•„๋“œ ๋ฉ”์†Œ๋“œ ์„ ์–ธ static int staticMethod(int a){return a;}
์ •์  ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ ํด๋ž˜์Šค.๋ฉ”์†Œ๋“œ(๋งค๊ฐœ๋ณ€์ˆ˜);
์ •์  ์ดˆ๊ธฐํ™” ๋ธ”๋ก
์ •์ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‚ฌ์šฉ.
static{info=company+model;}
์ •์  ๋ฉ”์†Œ๋“œ/๋ธ”๋ก
์„ ์–ธ ์‹œ ์ฃผ์˜์ 
์ •์  ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด ์—†์ด๋„ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—,
์ธ์Šคํ„ด์Šค ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ 
thisํ‚ค์›Œ๋“œ๋„ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•จ.
Singleton
๊ฐœ์š”
ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ•˜๋‚˜๋งŒ
์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•จ.
์ƒ์„ฑ ์ฝ”๋“œ ์˜ˆ์‹œ
public class st{
static st singleton = new st();
private st(){}
statis st getInstance(){return singleton;}
}
์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด ํš๋“ st val=st.getInstance();
finalํ•„๋“œ
์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”.
์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋ถˆ๊ฐ€.
static final(์ƒ์ˆ˜) static final int constVal=3;
3 OOP
4)ํŒจํ‚ค์ง€,์ ‘๊ทผ์ œํ•œ์ž,Getter/Setter
Package
๊ฐœ์š”
ํด๋ž˜์Šค์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด
ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ.
๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์‹œ์Šคํ…œ ํด๋”.
ํ‘œ๊ธฐ ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค
์„ ์–ธ package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค;
์ ‘๊ทผ ์ œํ•œ์ž
๊ฐœ์š” ์ ‘๊ทผ์„ ์ œํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.
์ ‘๊ทผ์ œํ•œ์ˆœ์œ„(์•ฝ->๊ฐ•) public/protected/default/private
์ ‘๊ทผ์ œํ•œ ์ ์šฉ๋Œ€์ƒ ์ ‘๊ทผ๋ถˆ๊ฐ€ํด๋ž˜์Šค
public ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์—†์Œ
protected ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ
์ž์‹ํด๋ž˜์Šค๊ฐ€
์•„๋‹Œ ๋‹ค๋ฅธ
ํŒจํ‚ค์ง€ํด๋ž˜์Šค
default ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ
๋‹ค๋ฅธํŒจํ‚ค์ง€
ํด๋ž˜์Šค
private ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋ชจ๋“  ์™ธ๋ถ€ํด๋ž˜์Šค
Getter/Setter
Getter void setName(String name){this.name=Name;}
Setter String getName(){return name;}
3 OOP
5)ํŒจํ‚ค์ง€,์ ‘๊ทผ์ œํ•œ์ž,Getter/Setter
Package
๊ฐœ์š”
ํด๋ž˜์Šค์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด
ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ.
๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์‹œ์Šคํ…œ ํด๋”.
ํ‘œ๊ธฐ ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค
์„ ์–ธ package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค;
์ ‘๊ทผ ์ œํ•œ์ž
๊ฐœ์š” ์ ‘๊ทผ์„ ์ œํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ.
์ ‘๊ทผ์ œํ•œ์ˆœ์œ„(์•ฝ->๊ฐ•) public/protected/default/private
์ ‘๊ทผ์ œํ•œ ์ ์šฉ๋Œ€์ƒ ์ ‘๊ทผ๋ถˆ๊ฐ€ํด๋ž˜์Šค
public ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์—†์Œ
protected ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ
์ž์‹ํด๋ž˜์Šค๊ฐ€
์•„๋‹Œ ๋‹ค๋ฅธ
ํŒจํ‚ค์ง€ํด๋ž˜์Šค
default ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ
๋‹ค๋ฅธํŒจํ‚ค์ง€
ํด๋ž˜์Šค
private ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋ชจ๋“  ์™ธ๋ถ€ํด๋ž˜์Šค
Getter/Setter
Getter void setName(String name){this.name=Name;}
Setter String getName(){return name;}
3 OOP
6)์–ด๋…ธํ…Œ์ด์…˜(1)
์–ด๋…ธํ…Œ์ด์…˜
๊ฐœ์š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ
์‚ฌ์šฉํ˜•ํƒœ @AnnotationName
์šฉ๋„
์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ฝ”๋“œ๋ฌธ๋ฒ•์—๋Ÿฌ ์ฒดํฌํ† ๋ก ์ •๋ณด ์ œ๊ณต.
IDE๊ฐ€ ๋นŒ๋“œ/์ฝ”๋“œ๋ฅผ ์ž๋™์ƒ์„ฑํ•˜๋„๋ก ์ •๋ณด ์ œ๊ณต.
์‹คํ–‰์‹œ ํŠน์ •๊ธฐ๋Šฅ์„ ์‹คํ–‰๋„๋ก ์ •๋ณด ์ œ๊ณต.
ํƒ€์ž…์ •์˜ public @interface AnnotationName{}
์—˜๋ฆฌ๋จผํŠธ ์„ ์–ธ ์˜ˆ
public @interface AnnotationName{
String element1();
int element2() default 5;
}
ํ˜ธ์ถœ
@AnnotationName(element1="A",
element2=3);
๋˜๋Š”
@AnnotationName(element1="B");
3 OOP
7)์–ด๋…ธํ…Œ์ด์…˜(2)
ElementType์—ด๊ฑฐ์ƒ์ˆ˜ ์ ์šฉ๋Œ€์ƒ
TYPE ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค,์—ด๊ฑฐํƒ€์ž…
ANNOTATION_TYPE ์–ด๋…ธํ…Œ์ด์…˜
FIELD ํ•„๋“œ
CONSTRUCTOR ์ƒ์„ฑ์ž
METHOD ๋ฉ”์†Œ๋“œ
LOCAL_VARIABLE ๋กœ์ปฌ๋ณ€์ˆ˜
PACKAGE ํŒจํ‚ค์ง€
RetentionPolicy์—ด๊ฑฐ์ƒ์ˆ˜ ์„ค๋ช…
SOURCE ์†Œ์Šค์ƒ์—์„œ๋งŒ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด ์œ ์ง€.
CLASS ๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ๊นŒ์ง€ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด ์œ ์ง€.
RUNTIME
๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ๊นŒ์ง€์–ด๋…ธํ…Œ์ด์…˜์œ ์ง€,
๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ๋Ÿฐํƒ€์ž„์‹œ ์–ด๋…ธํ…Œ์ด์…˜์ •๋ณด
ํš๋“
๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) ์„ค๋ช…
Field[] getFields()
ํ•„๋“œ์ •๋ณด๋ฅผ
Field๋ฐฐ์—ด๋กœ๋ฆฌํ„ด
Constructor[] getConstructors()
์ƒ์„ฑ์ž์ •๋ณด๋ฅผ
Contructor๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด
Method[] getDeclaredMethods()
๋ฉ”์†Œ๋“œ์ •๋ณด๋ฅผ
Method๋ฐฐ์—ด๋กœ๋ฆฌํ„ด
3 OOP
8)์–ด๋…ธํ…Œ์ด์…˜(3)
๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜)
boolean
isAnnotationPresent
(Class<?extends Annotation>annotationClass)
์ง€์ •ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€.
Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ, ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ
๊ฒฝ์šฐ์—๋„ true๋ฐ˜ํ™˜
Annotation
getAnnotation(Class<T> annotationClass)
์ง€์ • ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜์–ด ์žˆ์œผ๋ฉด ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ผ๋ฉด null๋ฐ˜ํ™˜.
Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ
๊ฒฝ์šฐ์—๋„ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜
Annotation[]
getAnnotations()
์ ์šฉ๋œ ๋ชจ๋“  ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ฆฌํ„ดํ•œ๋‹ค.
Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ƒ์œ„ํด๋ž˜์Šค์— ์ ์šฉ๋œ
์–ด๋…ธํ…Œ์ด์…˜๋„ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค.
์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์—†์„ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ 0์ธ
๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค.
Annotation[]
getDeclaredAnnotations()
์ง์ ‘ ์ ์šฉ๋œ ๋ชจ๋“  ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜.
Class์—์„œ ํ˜ธ์ถœ์‹œ ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ
์–ด๋…ธํ…Œ์ด์…˜์€ ๋ˆ„๋ฝ.
Java(1/4)

More Related Content

PDF
Java(2/4)
PDF
Java lambda
PDF
Java class
PDF
Java ๊ธฐ์ดˆ
PDF
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
PDF
Java extends
PDF
Java inner class
PDF
Java programming pdf
Java(2/4)
Java lambda
Java class
Java ๊ธฐ์ดˆ
Java ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Java extends
Java inner class
Java programming pdf

What's hot (19)

PPTX
ํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
PDF
์ž๋ฐ”์—์„œ null์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•
PDF
Anatomy of Realm
PPTX
Jdk(java) 7 - 5. invoke-dynamic
PPTX
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
PDF
Java ๊ฐ•์˜์ž๋ฃŒ ed11
ย 
PDF
Realm ์ฝ”๋”ฉ์นดํŽ˜ - ์ด์ข…์ฐฌ
PDF
02 realm ๋ชจ๋ธ &amp; ๊ด€๊ณ„
PDF
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
PDF
Class Loader_Wh apm
PDF
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋„ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” Go - Scope ํŽธ
PDF
Java null survival guide
PPTX
์ž๋ฐ”์Šคํ„ฐ๋”” 3 2
PDF
Objective-C Runtime Programming Guide
PDF
Introduction to Fork Join Framework_SYS4U I&C
ย 
PDF
[D2 CAMPUS] ์•ˆ๋“œ๋กœ์ด๋“œ ์˜คํ”ˆ์†Œ์Šค ์Šคํ„ฐ๋””์ž๋ฃŒ - Http Request
PPTX
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
PDF
Runtime Data Areas_Wh apm
PDF
์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ์›์น™
ํŒŒ์ด์ฌ ๋ณ‘๋ ฌํ”„๋กœ๊ทธ๋ž˜๋ฐ
์ž๋ฐ”์—์„œ null์„ ์•ˆ์ „ํ•˜๊ฒŒ ๋‹ค๋ฃจ๋Š” ๋ฐฉ๋ฒ•
Anatomy of Realm
Jdk(java) 7 - 5. invoke-dynamic
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„’แ…กแ†ทแ„‰แ…ฎ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
Java ๊ฐ•์˜์ž๋ฃŒ ed11
ย 
Realm ์ฝ”๋”ฉ์นดํŽ˜ - ์ด์ข…์ฐฌ
02 realm ๋ชจ๋ธ &amp; ๊ด€๊ณ„
Secrets of the JavaScript Ninja - Chapter 3. Functions are Fundamental
Class Loader_Wh apm
์ฃผ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž๋„ ์ดํ•ด ํ•  ์ˆ˜ ์žˆ๋Š” Go - Scope ํŽธ
Java null survival guide
์ž๋ฐ”์Šคํ„ฐ๋”” 3 2
Objective-C Runtime Programming Guide
Introduction to Fork Join Framework_SYS4U I&C
ย 
[D2 CAMPUS] ์•ˆ๋“œ๋กœ์ด๋“œ ์˜คํ”ˆ์†Œ์Šค ์Šคํ„ฐ๋””์ž๋ฃŒ - Http Request
แ„‘แ…กแ„‹แ…ตแ„Šแ…ฅแ†ซ แ„‘แ…ณแ†ฏแ„…แ…กแ„‰แ…ณแ„แ…ณ แ„‹แ…ตแ„’แ…ขแ„’แ…กแ„€แ…ต
Runtime Data Areas_Wh apm
์œ ์ง€๋ณด์ˆ˜ ๊ฐ€๋Šฅํ•œ ๊ฐœ๋ฐœ ์›์น™
Ad

Similar to Java(1/4) (20)

PPTX
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
PPTX
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
PDF
Java_05 class
PDF
Java advancd ed10
ย 
PPTX
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
PPTX
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
PDF
Java stream v0.1
PDF
Java stream v0.1
PDF
2023.05.01 แ„‡แ…กแ†ฏแ„‘แ…ญ แ„Œแ…กแ„…แ…ญ : ์ž๋ฐ”์˜ ๊ธฐ์ดˆ
PDF
Java_01 ๊ธฐ์ดˆ
PPTX
Just java
PDF
Java the good parts
PPT
์ž๋ฐ”์•ผ ๋†€์ž PPT
PPTX
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
PDF
Java tutorial
PPTX
์ž๋ฐ” ์Šคํ„ฐ๋””(6๊ธฐ) 2
PDF
Java_02 ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
PDF
Effective java
PDF
5แ„Œแ…กแ†ผ แ„€แ…ขแ†จแ„Žแ…ฆแ„‹แ…ชแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
PDF
SpringCamp 2013 : About Jdk8
[HaU] ์‹ ์ž… ๊ธฐ์ˆ  ๋ฉด์ ‘ ์ค€๋น„ java
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap.11 ๊ธฐ๋ณธ API ํด๋ž˜์Šค(java)(KOR)
Java_05 class
Java advancd ed10
ย 
๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ธฐ๋ณธ
[์ž๋ฐ”์นดํŽ˜] ์ž๋ฐ” ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ (2017)
Java stream v0.1
Java stream v0.1
2023.05.01 แ„‡แ…กแ†ฏแ„‘แ…ญ แ„Œแ…กแ„…แ…ญ : ์ž๋ฐ”์˜ ๊ธฐ์ดˆ
Java_01 ๊ธฐ์ดˆ
Just java
Java the good parts
์ž๋ฐ”์•ผ ๋†€์ž PPT
์ด๊ฒƒ์ด ์ž๋ฐ”๋‹ค Chap. 6 ํด๋ž˜์Šค(CLASS)(KOR)
Java tutorial
์ž๋ฐ” ์Šคํ„ฐ๋””(6๊ธฐ) 2
Java_02 ๋ณ€์ˆ˜์ž๋ฃŒํ˜•
Effective java
5แ„Œแ…กแ†ผ แ„€แ…ขแ†จแ„Žแ…ฆแ„‹แ…ชแ„แ…ณแ†ฏแ„…แ…ขแ„‰แ…ณ
SpringCamp 2013 : About Jdk8
Ad

Java(1/4)

  • 3. 1) ์ž๋ฐ” 1 ๊ฐœ์š” ์ž๋ฐ” OOP(๊ฐ์ฒด์ง€ํ–ฅํ”„๋กœ๊ทธ๋ž˜๋ฐ)์–ธ์–ด ์ž๋ฐ” ํŠน์ง• ์บก์Аํ™”/์ƒ์†/๋‹คํ˜•์„ฑ/ํ•จ์ˆ˜์ ์Šคํƒ€์ผ์ฝ”๋”ฉ์ง€์›/๋ฉ”๋ชจ๋ฆฌ๊ด€๋ฆฌ:GC SE๋ฒ„์ „ JDKํ•„์š”, ๊ธฐ๋ณธ์—๋””์…˜, ๊ฐœ๋ฐœ๋„๊ตฌ์™€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌAPI์ •์˜ EE๋ฒ„์ „ ๋ถ„์‚ฐํ™˜๊ฒฝ(NW,Internet)์˜ Server์šฉ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜๊ฐœ๋ฐœ๋„๊ตฌ ๋ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌAPI์ •์˜ ๊ฐ•์  ๋ฉ€ํ‹ฐ์Šค๋ ˆ๋“œ๊ตฌํ˜„/๋™์ ๋กœ๋”ฉ/์˜คํ”ˆ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ JVM ์ž๋ฐ”ํ”„๋กœ๊ทธ๋žจ์ด OS์—์„œ ์‹คํ–‰๋˜๋„๋ก ํ•˜๋ ค๋ฉด ํ•„์š”. ์ปดํŒŒ์ผ๋‹จ๊ณ„ ์†Œ์ŠคํŒŒ์ผ(.java)->๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ(.class) ->jvm๊ตฌ๋™->OS์— ๋งž๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ->์‹คํ–‰
  • 4. 1 ๊ฐœ์š” 2)ํ™˜๊ฒฝ๊ตฌ์ถ•, ๊ธฐ๋ณธ๊ทœ์น™, ๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด ํ™˜๊ฒฝ๊ตฌ์ถ• JRE JVM+Std Class Lib JDK JRE+๊ฐœ๋ฐœ๋„๊ตฌ ํ™˜๊ฒฝ๋ณ€์ˆ˜1 JAVA_HOME์— jdk๋””๋ ‰ํ† ๋ฆฌ๊ฐ’ ์„ค์ • ํ™˜๊ฒฝ๋ณ€์ˆ˜2 Path์— %JAVA_HOME%bin ์ถ”๊ฐ€ API Docs http://docs.oracle.com/javase/8/docs/api/ ๊ธฐ๋ณธ๊ทœ์น™ ์ฃผ์„ํ˜•ํƒœ // ๋˜๋Š” /* */ ๋ณ€์ˆ˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์˜๋ฏธ, int a; ํ˜•ํƒœ, ๋Œ€/์†Œ๋ฌธ์ž๊ตฌ๋ถ„ ๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด ๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด(ํ‘œ๊ธฐ) t n r " ' u16์ง„์ˆ˜ ๋ฌธ์ž๋ฆฌํ„ฐ๋Ÿด(๊ฐ’) ์ˆ˜ํ‰ํƒญ ์ค„๋ฐ”๊ฟˆ ๋ฆฌํ„ด ํฐ๋”ฐ์˜ดํ‘œ ์ž‘์€๋”ฐ์˜ดํ‘œ ์Šฌ๋Ÿฌ์‰ฌ 16์ง„์ˆ˜์œ ๋‹ˆ์ฝ”๋“œ
  • 5. 1 ๊ฐœ์š” 3)ํƒ€์ž…๋ณ€ํ™˜, ์—ฐ์‚ฐ์ž ์˜ˆ์‹œ byte->int ํ˜น์€ ๊ทธ ์—ญ์œผ๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ํ–‰์œ„. ์ข…๋ฅ˜ ์ž๋™(๋ฌต์‹œ์ ) / ๊ฐ•์ œ(๋ช…์‹œ์ ) ์ž๋™ํƒ€์ž…๋ณ€ํ™˜ (ํ”„๋กœ๋ชจ์…˜) ํฐํƒ€์ž…=์ž‘์€ํƒ€์ž… ์˜ ๊ฒฝ์šฐ. [ byte(1) < short(2) < int(4) < long(8) < float(4) < double(8) ] ๊ฐ•์ œํƒ€์ž…๋ณ€ํ™˜ (์บ์ŠคํŒ…) ์ž‘์€ํƒ€์ž… = (์ž‘์€ํƒ€์ž…)ํฐํƒ€์ž… ์˜ ๊ฒฝ์šฐ. ์—ฐ์‚ฐ์ž์šฐ์„ ์ˆœ์œ„ (๋†’->๋‚ฎ) ์ฆ๊ฐ,๋ถ€ํ˜ธ,~, !, ์‚ฐ์ˆ , ์‰ฌํ”„ํŠธ, ๋น„๊ต, ๋…ผ๋ฆฌ, ์กฐ๊ฑด, ๋Œ€์ž… ๋ฌธ์ž์—ด ๋น„๊ต ์˜ค๋ฅ˜ ์˜ˆ String str1="A"; String str2="A"; String str3=new String("A"); str1==str2 //true, str2==str3 //false ์ž๋ฐ”๋Š” ๋ฌธ์ž์—ด ๋ฆฌํ„ฐ๋Ÿด์ด ๋™์ผํ• ๋•Œ, ๋™์ผํ•œ String๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€๋งŒ, new์—ฐ์‚ฐ์ž๋กœ ์ƒ ์„ฑ๋œ ๊ฒฝ์šฐ, ์ƒˆ๋กœ์šด String๊ฐ์ฒด์˜ ๋ฒˆ์ง€๊ฐ’์„ ๊ฐ– ๊ฒŒ๋˜๋ฉฐ, ==๋น„๊ต์—ฐ์‚ฐ์€ ๋ณ€์ˆ˜๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ๋ฒˆ์ง€๋ฅผ ๋น„๊ตํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์•„๋ž˜์™€ ๊ฐ™์€ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•จ
  • 6. 1 ๊ฐœ์š” 4)์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ if๋ฌธ ํ˜•ํƒœ if(์กฐ๊ฑด์‹){true์ผ๊ฒฝ์šฐ;}false์ผ๊ฒฝ์šฐ; if-else๋ฌธ ํ˜•ํƒœ if(์กฐ๊ฑด์‹){true์ผ๊ฒฝ์šฐ;}else{false์ผ๊ฒฝ์šฐ;} if-elseif๋ฌธ ํ˜•ํƒœ if(์กฐ๊ฑด์‹A){A๊ฐ€ true์ผ๊ฒฝ์šฐ;}else if(์กฐ๊ฑด์‹B){B๊ฐ€ true์ผ๊ฒฝ์šฐ;}๊ทธ ์™ธ์˜๊ฒฝ์šฐ; switch๋ฌธ ํ˜•ํƒœ switch(๋ณ€์ˆ˜){ case ๊ฐ’1:๋ณ€์ˆ˜==๊ฐ’1์ธ๊ฒฝ์šฐ;break; case ๊ฐ’2:๋ณ€์ˆ˜==๊ฐ’2์ธ๊ฒฝ์šฐ;break; default:๊ฐ’1๋„,๊ฐ’2๋„ ์•„๋‹๊ฒฝ์šฐ;} for๋ฌธ ํ˜•ํƒœ for(์ดˆ๊ธฐํ™”์‹;์กฐ๊ฑด์‹;์ฆ๊ฐ์‹){์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;} while๋ฌธ ํ˜•ํƒœ while(์กฐ๊ฑด์‹){์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;} do-while๋ฌธ ํ˜•ํƒœ do{์ฒซ1ํšŒ๋ฌด์กฐ๊ฑด์‹คํ–‰ํ›„ ์กฐ๊ฑด์‹์ดtrue์ธ๊ฒฝ์šฐ๋ฐ˜๋ณต;}while(์กฐ๊ฑด์‹); continue๋ฌธ 1ํšŒ skip break๋ฌธ ๊ฐ€์žฅ๊ฐ€๊นŒ์šด๋ฐ˜๋ณต๋ฌธ์„ ํƒˆ์ถœ
  • 8. 2 Memory 1)ClassLoader ๊ฐœ์š” ์ž๋ฐ”๋Š” ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ํด๋ž˜์Šค๋ฅผ ์–ด๋–ป๊ฒŒ ์–ธ์ œ JVM์œผ๋กœ ๋กœ๋”ฉํ•˜๊ณ , ์–ธ๋กœ๋”ฉํ•˜๋Š”์ง€์— ๋Œ€ํ•œ ํŠน์ •ํ•œ ๊ทœ์น™์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์ดํ•ดํ•ด์•ผ, ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ข€ ๋” ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ ๊ฐœ๋ฐœ์ž๊ฐ€ ์ง์ ‘ ์ž์‹ ๋งŒ์˜ ์ปค์Šคํ…€ ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค. ์‚ฌ์šฉ์˜ˆ์ œ ClassLoader cl = . . . // ClassLoader์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ Class klass = null; try { klass = cl.loadClass("java.util.Date"); } catch(ClassNotFoundException ex) { // ํด๋ž˜์Šค๋ฅผ ๋ฐœ๊ฒฌํ•  ์ˆ˜ ์—†์„ ๊ฒฝ์šฐ์— ๋ฐœ์ƒํ•œ๋‹ค. ex.printStackTrace(); } ๊ด€๊ณ„๋„
  • 9. 2 Memory 2)๋™์ ๋กœ๋”ฉ ๊ฐœ์š” ์ž๋ฐ”๋Š” ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ์ฝ์–ด์˜จ๋‹ค. ์ฆ‰, ๋Ÿฐํƒ€์ž„์— ๋ชจ๋“  ์ฝ”๋“œ๊ฐ€ JVM์— ๋งํฌ๋œ๋‹ค. ๋ชจ๋“  ํด๋ž˜์Šค ๋Š” ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์ฐธ์กฐ๋˜๋Š” ์ˆœ๊ฐ„์— ๋™์ ์œผ๋กœ JVM์— ๋งํฌ๋˜๋ฉฐ, ๋ฉ”๋ชจ๋ฆฌ์— ๋กœ๋”ฉ๋œ๋‹ค. ์ž๋ฐ”์˜ ๋Ÿฐํƒ€ ์ž„ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ([JDK ์„ค์น˜ ๋””๋ ‰ํ† ๋ฆฌ]/jre/lib/rt.jar) ์—ญ์‹œ ์˜ˆ์™ธ๊ฐ€ ์•„๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋™์ ์ธ ํด๋ž˜ ์Šค ๋กœ๋”ฉ์€ ์ž๋ฐ”์˜ ํด๋ž˜์Šค๋กœ๋” ์‹œ์Šคํ…œ์„ ํ†ตํ•ด์„œ ์ด๋ฃจ์–ด์ง€๋ฉฐ, ์ž๋ฐ”๊ฐ€ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ œ๊ณตํ•˜๋Š” ํด๋ž˜ ์Šค๋กœ๋”๋Š” java.lang.ClassLoader๋ฅผ ํ†ตํ•ด์„œ ํ‘œํ˜„๋œ๋‹ค. JVM์ด ์‹œ์ž‘๋˜๋ฉด, ๋ถ€ํŠธ์ŠคํŠธ๋žฉ (bootstrap) ํด๋ž˜์Šค๋กœ๋”๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ๊ทธ ๋‹ค์Œ์— ๊ฐ€์žฅ ์ฒซ๋ฒˆ์งธ ํด๋ž˜์Šค์ธ Object๋ฅผ ์‹œ์Šคํ…œ์— ์ฝ ์–ด์˜จ๋‹ค. ๋Ÿฐํƒ€์ž„์— ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋‹ค๋Š” ๊ฒƒ์€ JVM์ด ํด๋ž˜์Šค์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ๊ฐ–๊ณ  ์žˆ์ง€ ์•Š๋‹ค๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค. ์ฆ‰, JVM์€ ํด๋ž˜์Šค์˜ ๋ฉ”์†Œ๋“œ, ํ•„๋“œ, ์ƒ์†๊ด€๊ณ„ ๋“ฑ์— ๋Œ€ํ•œ ์ •๋ณด๋ฅผ ์•Œ์ง€ ๋ชปํ•œ๋‹ค. ๋”ฐ ๋ผ์„œ, ํด๋ž˜์Šค๋กœ๋”๋Š” ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ๊ตฌํ•˜๊ณ , ๊ทธ ํด๋ž˜์Šค๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ์ง€๋ฅผ ๊ฒ€์‚ฌํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๋งŒ์•ฝ ์ด๊ฒƒ์„ ํ•  ์ˆ˜ ์—†๋‹ค๋ฉด, JVM์€ .class ํŒŒ์ผ์˜ ๋ฒ„์ „์ด ์ผ์น˜ํ•˜์ง€ ์•Š์„ ์ˆ˜ ์žˆ์œผ ๋ฉฐ, ๋˜ํ•œ ํƒ€์ž… ๊ฒ€์‚ฌ๋ฅผ ํ•˜๋Š” ๊ฒƒ์ด ๋ถˆ๊ฐ€๋Šฅํ•  ๊ฒƒ์ด๋‹ค. JVM์€ ๋‚ด๋ถ€์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋ถ„์„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ–๊ณ  ์žˆ์œผ๋ฉฐ, JDK 1.1๋ถ€ํ„ฐ๋Š” ๊ฐœ๋ฐœ์ž๋“ค์ด ๋ฆฌํ”Œ๋ ‰์…˜(Reflection)์„ ํ†ตํ•ด์„œ ์ด๋Ÿฌํ•œ ํด๋ž˜ ์Šค์˜ ๋ถ„์„์„ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ณ  ์žˆ๋‹ค. ๋กœ๋“œํƒ€์ž„ ๋™์  ๋กœ๋”ฉ (load-time dynamic loading) ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ํ•„์š”ํ•œ ํด๋ž˜์Šค. ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ณผ์ •์—์„œ ๋™์ ์œผ๋กœ ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋กœ๋“œํƒ€์ž„ ๋™์  ๋กœ๋”ฉ์ด๋ผ ๊ณ  ํ•œ๋‹ค. ๋Ÿฐํƒ€์ž„ ๋™์  ๋กœ๋”ฉ (run-time dynamic loading) ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ๊ฐ€ ์•„๋‹Œ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ์ˆœ๊ฐ„์— ํด๋ž˜์Šค๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๊ฒƒ์„ ๋Ÿฐํƒ€์ž„ ๋™์  ๋กœ๋”ฉ ์ด๋ผ๊ณ  ํ•œ๋‹ค.
  • 10. 2 Memory 3)DataType, ๋ฉ”๋ชจ๋ฆฌํ• ๋‹น, RDA Data-Type ๋ถ„๋ฅ˜ Primitive / Reference Primitive Type(๊ธฐ๋ณธํ˜•) ์ •์ˆ˜(byte/char/short/int/long), ์‹ค์ˆ˜(float/double), ๋…ผ๋ฆฌ(boolean) Reference Type(์ฐธ์กฐํ˜•) ๋ฐฐ์—ดํƒ€์ž…/์—ด๊ฑฐํƒ€์ž…/ํด๋ž˜์Šค/์ธํ„ฐํŽ˜์ด์Šค ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๋ถ„๋ฅ˜ Stack , Heap ์ฐธ์กฐํƒ€์ž…๋ณ€์ˆ˜ Heap์˜์—ญ์˜ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐ ๊ธฐ๋ณธํƒ€์ž…๋ณ€์ˆ˜ Stack์˜์—ญ์— ๊ฐ’ ์ €์žฅ Runtime Data Area(RDA) ๋ฉ”๋ชจ๋ฆฌ ํ• ๋‹น ์ˆœ์„œ java.exe -> JVM์‹คํ–‰ ->OS๊ฐ€ JVM์— ๋ฉ”๋ชจ๋ฆฌ(RDA)ํ• ๋‹น ๋ฉ”๋ชจ๋ฆฌ ๊ตฌ์„ฑ ๋ฉ”์†Œ๋“œ์˜์—ญ/ํž™์˜์—ญ/(n๊ฐœ์˜)์Šค๋ ˆ๋“œ ๋ฉ”์†Œ๋“œ ์˜์—ญ class, runtime constant pool, field, method ๋ฐ์ดํ„ฐ, method code, ์ƒ์„ฑ์ž ๋“ฑ์„ ๋ถ„๋ฅ˜ ์ €์žฅ. JVM์ด ์‹œ์ž‘๋ ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ๋ชจ๋“  ์Šค๋ ˆ๋“œ๊ฐ€ ๊ณต์œ ํ•˜๋Š” ์˜์—ญ ํž™ ์˜์—ญ ๊ฐ์ฒด,๋ฐฐ์—ด์ƒ์„ฑ ์˜์—ญ. ์ƒ์„ฑ๋œ ๊ฐ์ฒด์™€ ๋ฐฐ์—ด์ด JVM์Šคํƒ์˜์—ญ์—์„œ ์ฐธ์กฐ. GC๋Š” ์ฐธ์กฐ๋˜์ง€ ์•Š๋Š” ๊ฐ์ฒด๋Š” ์“ฐ๋ ˆ๊ธฐ๋กœ ์ทจ๊ธ‰ํ•˜์—ฌ ์ œ๊ฑฐ. JVM ์Šคํƒ ์˜์—ญ ๊ฐ ์Šค๋ ˆ๋“œ๋งˆ๋‹ค ํ•˜๋‚˜์”ฉ ์กด์žฌ. ์Šค๋ ˆ๋“œ๊ฐ€ ์‹œ์ž‘๋ ๋•Œ ํ• ๋‹น. ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋งˆ๋‹ค Frame์„ pushํ•˜๊ณ , ๋ฉ”์†Œ๋“œ๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด pop์ˆ˜ํ–‰. ํ”„๋ ˆ์ž„๋งˆ๋‹ค ๋กœ์ปฌ ๋ณ€์ˆ˜ ์Šค ํƒ์ด ์žˆ๊ณ ,๊ธฐ๋ณธํƒ€์ž…/์ฐธ์กฐํƒ€์ž… ๋ณ€์ˆ˜๊ฐ€ push/pop๋จ.
  • 11. 2 Memory 4)์ฐธ์กฐ๋ณ€์ˆ˜๋น„๊ต์™€ null, String, ๋ฐฐ์—ดํƒ€์ž… ์ฐธ์กฐ๋ณ€์ˆ˜ ๋น„๊ต์™€ null ์ฐธ์กฐํƒ€์ž…๋ณ€์ˆ˜ ๋น„๊ต์—ฐ์‚ฐ ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ„ ==, != ๋Š” ์ฃผ์†Œ๊ฐ’ ๋น„๊ต null ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ•˜์ง€ ์•Š์œผ๋ฉด ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” null์„ ๋ฐ˜ํ™˜, null๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ํ•˜๋ฉด, ์ฐธ์กฐ๋ณ€์ˆ˜๋Š” ์Šคํƒ์˜์—ญ์— ์ƒ์„ฑ๋จ. NullPointerException ์ฐธ์กฐ๋ณ€์ˆ˜๊ฐ€ null๊ฐ’์„ ๊ฐ€์ง€๊ณ ์žˆ์„๋•Œ ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋ฐœ์ƒ. String equals ์‚ฌ์šฉ์˜ˆ : str1.equals(str2); ์ฐธ์กฐ๋ฅผ ์žƒ์„ ๊ฒฝ์šฐ String๊ฐ์ฒด๊ฐ€ null๊ฐ’์ผ๋•Œ, GC์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ œ๊ฑฐ๋จ. ๋ฐฐ์—ด ํƒ€์ž… ๊ฐœ์š” ๊ฐ™์€ ํƒ€์ž…์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ์†๊ณต๊ฐ„์— ๋‚˜์—ด์‹œํ‚ค๊ณ  index๋ฅผ ๋ถ€์—ฌ. ์„ ์–ธ ํƒ€์ž…[] ๋ณ€์ˆ˜; ํƒ€์ž… ๋ณ€์ˆ˜[]; null์ดˆ๊ธฐํ™” ํƒ€์ž…[] ๋ณ€์ˆ˜=null; ๊ฐ’๋ชฉ๋ก ๋ฐฐ์—ด ์ƒ์„ฑ ํƒ€์ž…[] ๋ณ€์ˆ˜={val1, val2,โ€ฆ}; ๋ฐฐ์—ด๊ธธ์ด ๋ฐฐ์—ด๋ณ€์ˆ˜.length; //์ฝ๊ธฐ์ „์šฉ์ด๋ฉฐ, ๊ฐ’์„ ํ• ๋‹นํ•  ์ˆ˜ ์—†์Œ. ๋ฐฐ์—ด๊ฐ„ ๋ณต์‚ฌ System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); //oldArr, 0, new Arr, 0, oldArr.length ๋˜๋Š” for๋ฌธ์œผ๋กœ ๋ณต์‚ฌ new์—ฐ์‚ฐ์ž ์‚ฌ์šฉ (new์—ฐ์‚ฐ์ž๋Š” ๊ฐ’์„ ์ดˆ๊ธฐํ™”ํ•˜๋ฏ€๋กœ, int๋ฐฐ์—ด์—์„œ ๊ฐ ํž™ ์˜์—ญ์„ ์ฐธ์กฐํ•˜๋ฉด 0์„ ๋ฐ˜ํ™˜) ๋ณ€์ˆ˜=new ํƒ€์ž…[]{a,b,c}; ํƒ€์ž…[] ๋ณ€์ˆ˜=new ํƒ€์ž…[size]; int arr=new int[5]; int[] scores; scores=new int[]{1,2,3};
  • 12. 2 Memory 5)์ปค๋งจ๋“œ๋ผ์ธ์ž…๋ ฅ,์—ด๊ฑฐํƒ€์ž…,Calendarํด๋ž˜์Šค ์ปค๋งจ๋“œ ๋ผ์ธ ์ž…๋ ฅ String[] args={}; ์ด ๊ฐ’์ด ์„ค์ •๋˜๋ฉด mian()๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์‹œ ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ์ „๋‹ฌ๋จ. ์—ด๊ฑฐ ํƒ€์ž… ๊ฐœ์š” ํ•œ์ •๋œ ๊ฐ’์„ ๊ฐ–๋Š” ๋ฐ์ดํ„ฐ ํƒ€์ž…(enum) ์„ ์–ธ์˜ˆ์‹œ public enum week{mon, tue, wed, thu, fri, sat, sun} ์‚ฌ์šฉ์˜ˆ์‹œ week thisWeek; //์„ ์–ธ thisWeek.mon; //ํ˜ธ์ถœ week thisWeek=week.sun;//๊ฐ™์€ ๊ฐ์ฒด ์ฐธ์กฐ week birth=null; Calendar ํด๋ž˜์Šค ์„ ์–ธ์˜ˆ์‹œ Calendar now = Calendar.getInstance(); ์‚ฌ์šฉ์˜ˆ์‹œ int year=now.get(Calendar.YEAR);
  • 13. 2 Memory 6)์—ด๊ฑฐ๊ฐ์ฒด ๋ฉ”์†Œ๋“œ ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ //์„ค๋ช… String name() //๋ฌธ์ž์—ด ๋ฆฌํ„ด week today = week.sun; String name=today.name();//sun ๋ฆฌํ„ด int ordinal()//์—ด๊ฑฐ ๊ฐ์ฒด์˜ ์ˆœ๋ฒˆ(0๋ฒˆ๋ถ€ํ„ฐ)์„ ๋ฆฌํ„ด week today=week.sun; int ordinal = today.ordinal();//sun์˜ ์ธ๋ฑ์Šค 6์„ ๋ฆฌํ„ด int compareTo() //์—ด๊ฑฐ๊ฐ์ฒด๋ฅผ ๋น„๊ตํ•ด์„œ ์ˆœ๋ฒˆ์ฐจ์ด๋ฅผ ๋ฆฌํ„ด week day1=week.mon; week day2=week.wed; int result1=day1.compareTo(day2);//-2 int result2=day2.compareTo(day1);//-2 ์—ด๊ฑฐ ํƒ€์ž… valuesOf(String name)//์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด์˜ ์—ด๊ฑฐ ๊ฐ์ฒด๋ฅผ ๋ฆฌํ„ด week day=week.valueOf("sat");//day๊ฐ€ week.sat๋ฅผ ์ฐธ์กฐํ•˜๊ฒŒ๋จ
  • 15. 3 OOP 1)OOP ๊ฐœ๊ด„ ๊ฐ์ฒด ์‹ค์žฌํ•˜๊ฑฐ๋‚˜ ์ถ”์ƒํ™” ํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ์†์„ฑ์„ ๊ฐ€์ง€๊ณ  ๋‹ค๋ฅธ ๊ฒƒ๊ณผ ์‹๋ณ„๋˜๋Š” ๊ฒƒ. (symbolic์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ. ์˜ˆ๋ฅผ ๋“ค๋ฉด ๋Œ€ํ•œ๋ฏผ๊ตญ์„ ์ถ”์ƒํ™”ํ•ด์„œ ํƒœ๊ทน๊ธฐ๋กœ ํ‘œํ˜„) ๊ฐ์ฒด์˜ ํŠน์ง• ์†์„ฑ๊ณผ ๋™์ž‘(ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ)์„ ์ง€๋‹˜. ๊ฐ์ฒด์˜ ์ƒํ˜ธ์ž‘์šฉ ๋ฉ”์†Œ๋“œ์˜ ํ˜ธ์ถœ๊ณผ ๋งค๊ฐœ๋ณ€์ˆ˜ ์ „๋‹ฌ๋กœ ์„ฑ๋ฆฝ ๊ฐ์ฒด๊ด€๊ณ„ ์ข…๋ฅ˜ ์ง‘ํ•ฉ/์‚ฌ์šฉ/์ƒ์† ์‚ฌ์šฉ๊ด€๊ณ„ ๊ฐ์ฒด๊ฐ„ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ์˜ ์ƒํ˜ธ์ž‘์šฉ ์ƒ์†๊ด€๊ณ„ ์ƒ์œ„๊ฐ์ฒด๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜์œ„๊ฐ์ฒด๋ฅผ ์ƒ์„ฑ ์ง‘ํ•ฉ๊ด€๊ณ„ ์ž๋™์ฐจ๋Š” ์—”์ง„/ํƒ€์ด์–ด/ํ•ธ๋“ค๋“ฑ๊ณผ ์ง‘ํ•ฉ๊ด€๊ณ„ OOP์˜ ํŠน์ง• ์บก์Аํ™”/์ƒ์†/๋‹คํ˜•์„ฑ ์บก์Аํ™” ๊ฐ์ฒด์˜ ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ๊ณ , ์‹ค์ œ ๊ตฌํ˜„๋‚ด์šฉ์„ ๊ฐ์ถค ์ƒ์† ์ƒ์œ„๊ฐ์ฒด์˜ ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ํ•˜์œ„๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ. ๋‹คํ˜•์„ฑ (Polymorphism) ๊ฐ™์€ ํƒ€์ž…์ด์ง€๋งŒ ์‹คํ–‰๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ. ๊ฐ์ฒด์™€ ํด๋ž˜์Šค ํด๋ž˜์Šค(์„ค๊ณ„๋„)๋ฅผ ์ด์šฉํ•˜์—ฌ ๋‹ค์–‘ํ•œ ์ธ์Šคํ„ด์Šค(๊ฐ์ฒด;๊ฑด๋ฌผ ๋“ฑ)๋ฅผ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ์Œ. ํด๋ž˜์Šค ๊ตฌ์„ฑ๋ฉค๋ฒ„ ํ•„๋“œ/์ƒ์„ฑ์ž/๋ฉ”์†Œ๋“œ
  • 16. 3 OOP 2)Class ํ•„๋“œ ์ƒํƒœ/๊ณ ์œ ์ •๋ณด/๊ฐ์ฒด๋ฅผ ์ €์žฅ ์ƒ์„ฑ์ž new์—ฐ์‚ฐ์ž๋กœ ํ˜ธ์ถœ. ํ•„๋“œ์ดˆ๊ธฐํ™”์™€ ๋ฉ”์†Œ๋“œ ํ˜ธ์ถœ๋กœ ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉ ์ค€๋น„. ๋ฆฌํ„ดํƒ€์ž…์ด ์—†์Œ. ๋ฉ”์†Œ๋“œ ๊ฐ์ฒด๊ฐ„ ๋ฐ์ดํ„ฐ ์ „๋‹ฌ ์ˆ˜๋‹จ์œผ๋กœ ์‚ฌ์šฉ. ํ•„๋“œ ์ดˆ๊ธฐํ™” public class korean{ String nation="ํ•œ๊ตญ"; } ์ƒ์„ฑ์ž์—์„œ ํ•„๋“œ ์ดˆ๊ธฐํ™” pblic korean(String m){ nation=m; } ์ƒ์„ฑ์ž ์˜ค๋ฒ„๋กœ๋”ฉ (OverLoading) ์ด๋ฆ„์€ ๊ฐ™๊ณ  ๋งค๊ฐœ๋ณ€์ˆ˜๊ฐ€ ๋‹ค๋ฅธ ์—ฌ๋Ÿฌ ์ƒ์„ฑ์ž๋ฅผ ์„ ์–ธํ•˜๋Š” ๊ฒƒ์„ ๋งํ•จ. ์ƒ์„ฑ์ž์—์„œ this ๋‹ค๋ฅธ์ƒ์„ฑ์ž๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ์ฝ”๋“œ. ์ƒ์„ฑ์ž ์ฒซ์ค„์—์„œ๋งŒ ํ—ˆ์šฉ. ์‹œ๊ทธ๋‹ˆ์ณ ๋ฉ”์†Œ๋“œ ์„ ์–ธ๋ถ€. String toString(int a) ๋ฉ”์†Œ๋“œ ์˜ค๋ฒ„๋กœ๋”ฉ ๋™์ผ ํด๋ž˜์Šค ๋‚ด ๋™์ผ ์ด๋ฆ„์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์‹œ๊ทธ๋‹ˆ์ณ๋ฅผ ๋‹ฌ๋ฆฌํ•˜์—ฌ ์—ฌ๋Ÿฌ ๊ฐœ ์„ ์–ธ. ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ๊ฐ์ฒด(์ธ์Šคํ„ด์Šค)์ƒ์„ฑํ›„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ธ์Šคํ„ด์Šคํ•„๋“œ์™€ ์ธ์Šคํ„ด์Šค๋ฉ”์†Œ๋“œ๋ฅผ ๋งํ•จ. ์ธ์Šคํ„ด์Šค ๋‚ด์—์„œ this ๋‚ด๋ถ€๋ฉค๋ฒ„์— ์ ‘๊ทผํ•˜๊ธฐ ์œ„ํ•ด this๋ฅผ ์‚ฌ์šฉ
  • 17. 3 OOP 3)์ •์ ๋ฉค๋ฒ„ , Singleton ์ •์ ๋ฉค๋ฒ„/static ์ •์ ๋ฉค๋ฒ„ (ํด๋ž˜์Šค๋ฉค๋ฒ„) ๊ฐ์ฒด ์ƒ์„ฑ์—†์ด ์‚ฌ์šฉ๊ฐ€๋Šฅํ•œ ํ•„๋“œ/๋ฉ”์†Œ๋“œ ์ •์  ํ•„๋“œ ๋ฉค๋ฒ„ ์„ ์–ธ static ํƒ€์ž… ํ•„๋“œ; ๋˜๋Š” static ํƒ€์ž… ํ•„๋“œ=a; ์ •์  ํ•„๋“œ ๋ฉ”์†Œ๋“œ ์„ ์–ธ static int staticMethod(int a){return a;} ์ •์  ๋ฉ”์†Œ๋“œ ์‚ฌ์šฉ ํด๋ž˜์Šค.๋ฉ”์†Œ๋“œ(๋งค๊ฐœ๋ณ€์ˆ˜); ์ •์  ์ดˆ๊ธฐํ™” ๋ธ”๋ก ์ •์ ํ•„๋“œ๋ฅผ ์ดˆ๊ธฐํ™” ํ•  ๋•Œ ์‚ฌ์šฉ. static{info=company+model;} ์ •์  ๋ฉ”์†Œ๋“œ/๋ธ”๋ก ์„ ์–ธ ์‹œ ์ฃผ์˜์  ์ •์  ๋ฉค๋ฒ„๋Š” ๊ฐ์ฒด ์—†์ด๋„ ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ์ธ์Šคํ„ด์Šค ํ•„๋“œ/๋ฉ”์†Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ณ  thisํ‚ค์›Œ๋“œ๋„ ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•จ. Singleton ๊ฐœ์š” ํŠน์ • ๊ฐ์ฒด๊ฐ€ ์ „์ฒด ํ”„๋กœ๊ทธ๋žจ์—์„œ ํ•˜๋‚˜๋งŒ ์ƒ์„ฑ๋˜๋Š” ๊ฒƒ์„ ๋ณด์žฅํ•จ. ์ƒ์„ฑ ์ฝ”๋“œ ์˜ˆ์‹œ public class st{ static st singleton = new st(); private st(){} statis st getInstance(){return singleton;} } ์‹ฑ๊ธ€ํ†ค ๊ฐ์ฒด ํš๋“ st val=st.getInstance(); finalํ•„๋“œ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”. ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ฐ’์œผ๋กœ ์ดˆ๊ธฐํ™” ๋ถˆ๊ฐ€. static final(์ƒ์ˆ˜) static final int constVal=3;
  • 18. 3 OOP 4)ํŒจํ‚ค์ง€,์ ‘๊ทผ์ œํ•œ์ž,Getter/Setter Package ๊ฐœ์š” ํด๋ž˜์Šค์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ. ๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์‹œ์Šคํ…œ ํด๋”. ํ‘œ๊ธฐ ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค ์„ ์–ธ package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค; ์ ‘๊ทผ ์ œํ•œ์ž ๊ฐœ์š” ์ ‘๊ทผ์„ ์ œํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ์ ‘๊ทผ์ œํ•œ์ˆœ์œ„(์•ฝ->๊ฐ•) public/protected/default/private ์ ‘๊ทผ์ œํ•œ ์ ์šฉ๋Œ€์ƒ ์ ‘๊ทผ๋ถˆ๊ฐ€ํด๋ž˜์Šค public ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์—†์Œ protected ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ํด๋ž˜์Šค default ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋‹ค๋ฅธํŒจํ‚ค์ง€ ํด๋ž˜์Šค private ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋ชจ๋“  ์™ธ๋ถ€ํด๋ž˜์Šค Getter/Setter Getter void setName(String name){this.name=Name;} Setter String getName(){return name;}
  • 19. 3 OOP 5)ํŒจํ‚ค์ง€,์ ‘๊ทผ์ œํ•œ์ž,Getter/Setter Package ๊ฐœ์š” ํด๋ž˜์Šค์˜ ์ฒด๊ณ„์  ๊ด€๋ฆฌ๋ฅผ ์œ„ํ•ด ํŠธ๋ฆฌํ˜•ํƒœ๋กœ ๊ด€๋ฆฌ. ๋ฌผ๋ฆฌ์  ํŒŒ์ผ ์‹œ์Šคํ…œ ํด๋”. ํ‘œ๊ธฐ ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค ์„ ์–ธ package ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค; ์ ‘๊ทผ ์ œํ•œ์ž ๊ฐœ์š” ์ ‘๊ทผ์„ ์ œํ•œ ๊ธฐ๋Šฅ์„ ๊ตฌํ˜„ํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉ. ์ ‘๊ทผ์ œํ•œ์ˆœ์œ„(์•ฝ->๊ฐ•) public/protected/default/private ์ ‘๊ทผ์ œํ•œ ์ ์šฉ๋Œ€์ƒ ์ ‘๊ทผ๋ถˆ๊ฐ€ํด๋ž˜์Šค public ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์—†์Œ protected ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ์ž์‹ํด๋ž˜์Šค๊ฐ€ ์•„๋‹Œ ๋‹ค๋ฅธ ํŒจํ‚ค์ง€ํด๋ž˜์Šค default ํด๋ž˜์Šค,ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋‹ค๋ฅธํŒจํ‚ค์ง€ ํด๋ž˜์Šค private ํ•„๋“œ,์ƒ์„ฑ์ž,๋ฉ”์†Œ๋“œ ๋ชจ๋“  ์™ธ๋ถ€ํด๋ž˜์Šค Getter/Setter Getter void setName(String name){this.name=Name;} Setter String getName(){return name;}
  • 20. 3 OOP 6)์–ด๋…ธํ…Œ์ด์…˜(1) ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐœ์š” ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ ์‚ฌ์šฉํ˜•ํƒœ @AnnotationName ์šฉ๋„ ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ฝ”๋“œ๋ฌธ๋ฒ•์—๋Ÿฌ ์ฒดํฌํ† ๋ก ์ •๋ณด ์ œ๊ณต. IDE๊ฐ€ ๋นŒ๋“œ/์ฝ”๋“œ๋ฅผ ์ž๋™์ƒ์„ฑํ•˜๋„๋ก ์ •๋ณด ์ œ๊ณต. ์‹คํ–‰์‹œ ํŠน์ •๊ธฐ๋Šฅ์„ ์‹คํ–‰๋„๋ก ์ •๋ณด ์ œ๊ณต. ํƒ€์ž…์ •์˜ public @interface AnnotationName{} ์—˜๋ฆฌ๋จผํŠธ ์„ ์–ธ ์˜ˆ public @interface AnnotationName{ String element1(); int element2() default 5; } ํ˜ธ์ถœ @AnnotationName(element1="A", element2=3); ๋˜๋Š” @AnnotationName(element1="B");
  • 21. 3 OOP 7)์–ด๋…ธํ…Œ์ด์…˜(2) ElementType์—ด๊ฑฐ์ƒ์ˆ˜ ์ ์šฉ๋Œ€์ƒ TYPE ํด๋ž˜์Šค,์ธํ„ฐํŽ˜์ด์Šค,์—ด๊ฑฐํƒ€์ž… ANNOTATION_TYPE ์–ด๋…ธํ…Œ์ด์…˜ FIELD ํ•„๋“œ CONSTRUCTOR ์ƒ์„ฑ์ž METHOD ๋ฉ”์†Œ๋“œ LOCAL_VARIABLE ๋กœ์ปฌ๋ณ€์ˆ˜ PACKAGE ํŒจํ‚ค์ง€ RetentionPolicy์—ด๊ฑฐ์ƒ์ˆ˜ ์„ค๋ช… SOURCE ์†Œ์Šค์ƒ์—์„œ๋งŒ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด ์œ ์ง€. CLASS ๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ๊นŒ์ง€ ์–ด๋…ธํ…Œ์ด์…˜ ์ •๋ณด ์œ ์ง€. RUNTIME ๋ฐ”์ดํŠธ์ฝ”๋“œํŒŒ์ผ๊นŒ์ง€์–ด๋…ธํ…Œ์ด์…˜์œ ์ง€, ๋ฆฌํ”Œ๋ ‰์…˜์„ ์‚ฌ์šฉํ•ด ๋Ÿฐํƒ€์ž„์‹œ ์–ด๋…ธํ…Œ์ด์…˜์ •๋ณด ํš๋“ ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) ์„ค๋ช… Field[] getFields() ํ•„๋“œ์ •๋ณด๋ฅผ Field๋ฐฐ์—ด๋กœ๋ฆฌํ„ด Constructor[] getConstructors() ์ƒ์„ฑ์ž์ •๋ณด๋ฅผ Contructor๋ฐฐ์—ด๋กœ ๋ฆฌํ„ด Method[] getDeclaredMethods() ๋ฉ”์†Œ๋“œ์ •๋ณด๋ฅผ Method๋ฐฐ์—ด๋กœ๋ฆฌํ„ด
  • 22. 3 OOP 8)์–ด๋…ธํ…Œ์ด์…˜(3) ๋ฆฌํ„ดํƒ€์ž… ๋ฉ”์†Œ๋“œ๋ช…(๋งค๊ฐœ๋ณ€์ˆ˜) boolean isAnnotationPresent (Class<?extends Annotation>annotationClass) ์ง€์ •ํ•œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜์—ˆ๋Š”์ง€ ์—ฌ๋ถ€. Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ, ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ ๊ฒฝ์šฐ์—๋„ true๋ฐ˜ํ™˜ Annotation getAnnotation(Class<T> annotationClass) ์ง€์ • ์–ด๋…ธํ…Œ์ด์…˜์ด ์ ์šฉ๋˜์–ด ์žˆ์œผ๋ฉด ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜, ์•„๋‹ˆ๋ผ๋ฉด null๋ฐ˜ํ™˜. Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ ๊ฒฝ์šฐ์—๋„ ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜ Annotation[] getAnnotations() ์ ์šฉ๋œ ๋ชจ๋“  ์–ด๋…ธํ…Œ์ด์…˜์„ ๋ฆฌํ„ดํ•œ๋‹ค. Class์—์„œ ํ˜ธ์ถœํ–ˆ์„ ๋•Œ ์ƒ์œ„ํด๋ž˜์Šค์— ์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜๋„ ๋ชจ๋‘ ํฌํ•จํ•œ๋‹ค. ์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜์ด ์—†์„ ๊ฒฝ์šฐ ๊ธธ์ด๊ฐ€ 0์ธ ๋ฐฐ์—ด์„ ๋ฆฌํ„ดํ•œ๋‹ค. Annotation[] getDeclaredAnnotations() ์ง์ ‘ ์ ์šฉ๋œ ๋ชจ๋“  ์–ด๋…ธํ…Œ์ด์…˜ ๋ฐ˜ํ™˜. Class์—์„œ ํ˜ธ์ถœ์‹œ ์ƒ์œ„ ํด๋ž˜์Šค์— ์ ์šฉ๋œ ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ˆ„๋ฝ.