Notice
Recent Posts
Recent Comments
Link
๊ด€๋ฆฌ ๋ฉ”๋‰ด

๋ชฉ๋ก2021/09 (27)

KoreanFoodie's Study

10-1. ์ž๋ฐ” ์˜ˆ์™ธ์ฒ˜๋ฆฌ : ์ž๋ฐ” ์˜ˆ์™ธ์ฒ˜๋ฆฌ ์ข…๋ฅ˜์™€ ๋‹ค์ค‘ catch, ๋ฉ€ํ‹ฐ catch ์˜ˆ์ œ

์˜ˆ์™ธ์™€ ์˜ˆ์™ธ ํด๋ž˜์Šค JVM ์‹คํ–‰์— ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒผ์„ ๋•Œ, ์šฐ๋ฆฌ๋Š” ์—๋Ÿฌ๋ฅผ ๋งˆ์ฃผํ•˜๊ฒŒ ๋œ๋‹ค. ์ž๋ฐ”์—์„œ๋Š” ์—๋Ÿฌ ์ด์™ธ์— ์˜ˆ์™ธ(exception)๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ์˜ค๋ฅ˜๊ฐ€ ์žˆ๋Š”๋ฐ, ์˜ˆ์™ธ๋ž€ ์‚ฌ์šฉ์ž์˜ ์ž˜๋ชป๋œ ์กฐ์ž‘ ๋˜๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ž˜๋ชป๋œ ์ฝ”๋”ฉ์œผ๋กœ ์ธํ•ด ๋ฐœ์ƒํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ ์˜ค๋ฅ˜๋ฅผ ๋งํ•œ๋‹ค. ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒ๋˜๋ฉด ํ”„๋กœ๊ทธ๋žจ์€ ๊ณง๋ฐ”๋กœ ์ข…๋ฃŒํ•˜์ง€๋งŒ, ์˜ˆ์™ธ ์ฒ˜๋ฆฌ(Exception Handling)์„ ํ†ตํ•ด ํ”„๋กœ๊ทธ๋žจ์„ ์ข…๋ฃŒํ•˜์ง€ ์•Š๊ณ  ์ •์ƒ ์‹คํ–‰ ์ƒํƒœ๊ฐ€ ์œ ์ง€๋˜๋„๋ก ํ•  ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ์™ธ๋Š” ๋‘ ๊ฐ€์ง€ ์ข…๋ฅ˜๊ฐ€ ์žˆ๋‹ค. ํ•˜๋‚˜๋Š” ์ผ๋ฐ˜ ์˜ˆ์™ธ(Exception)์ด๊ณ , ๋‹ค๋ฅธ ํ•˜๋‚˜๋Š” ์‹คํ–‰ ์˜ˆ์™ธ(Runtime Exception)์ด๋‹ค. ์ผ๋ฐ˜ ์˜ˆ์™ธ๋Š” ์ปดํŒŒ์ผ๋Ÿฌ ์ฒดํฌ ์˜ˆ์™ธ๋ผ๊ณ ๋„ ํ•˜๋Š”๋ฐ, ์ž๋ฐ” ์†Œ์Šค๋ฅผ ์ปดํŒŒ์ผ ํ•˜๋Š” ๊ณผ์ •์—์„œ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•œ์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋งŒ์•ฝ ์˜ˆ์™ธ ์ฒ˜๋ฆฌ ์ฝ”๋“œ๊ฐ€ ..

Tutorials/Java 2021. 9. 19. 08:10
9-2. ์ž๋ฐ” ์ต๋ช… ๊ฐ์ฒด : ์ต๋ช… ์ž์‹ ๊ฐ์ฒด ์ƒ์„ฑ๊ณผ ๊ตฌํ˜„

์ต๋ช… ๊ฐ์ฒด ์ต๋ช…(anonymous) ๊ฐ์ฒด๋Š” ์ด๋ฆ„์ด ์—†๋Š” ๊ฐ์ฒด๋ฅผ ๋งํ•œ๋‹ค. ์ต๋ช… ๊ฐ์ฒด๋Š” ๋‹จ๋…์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์—†๊ณ  ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•˜๊ฑฐ๋‚˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•ด์•ผ๋งŒ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. ์ต๋ช… ๊ฐ์ฒด๋Š” ํ•„๋“œ์˜ ์ดˆ๊ธฐ๊ฐ’์ด๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐ๊ฐ’, ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๋งค๊ฐœ๊ฐ’์œผ๋กœ ์ฃผ๋กœ ๋Œ€์ž…๋œ๋‹ค. UI ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ ๊ฐ์ฒด๋‚˜ ์Šค๋ ˆ๋“œ ๊ฐ์ฒด๋ฅผ ๊ฐ„ํŽธํ•˜๊ฒŒ ์ƒ์„ฑํ•  ๋ชฉ์ ์œผ๋กœ ์ต๋ช… ๊ฐ์ฒด๊ฐ€ ๋งŽ์ด ํ™œ์šฉ๋œ๋‹ค. ์ต๋ช… ์ž์‹ ๊ฐ์ฒด ์ƒ์„ฑ ๋ถ€๋ชจ ํƒ€์ž…์œผ๋กœ ํ•„๋“œ๋‚˜ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ , ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ดˆ๊ฐ€๊ฐ’์œผ๋กœ ๋Œ€์ž…ํ•  ๊ฒฝ์šฐ๋ฅผ ์ƒ๊ฐํ•ด๋ณด์ž. ์šฐ์„  ๋ถ€๋ชจ ํด๋ž˜์Šค๋ฅผ ์ƒ์†ํ•ด์„œ ์ž์‹ ํด๋ž˜์Šค๋ฅผ ์„ ์–ธํ•˜๊ณ , new ์—ฐ์‚ฐ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์ž์‹ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ ํ›„, ํ•„๋“œ๋‚˜ ๋กœ์ปฌ ๋ณ€์ˆ˜์— ๋Œ€์ž…ํ•˜๋Š” ๊ฒƒ์ด ๊ธฐ๋ณธ์ด๋‹ค. class Child extends Parent { } // ์ž์‹ ํด๋ž˜์Šค ์„ ์–ธ class A { P..

Tutorials/Java 2021. 9. 18. 17:48
9-1. ์ž๋ฐ” ์ค‘์ฒฉ ํด๋ž˜์Šค์™€ ์ค‘์ฒฉ ์ธํ„ฐํŽ˜์ด์Šค : ๋กœ์ปฌ ํด๋ž˜์Šค

์ค‘์ฒฉ ํด๋ž˜์Šค ์ค‘์ฒฉ ํด๋ž˜์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์ฝ”๋“œ์˜ ๋ณต์žก์„ฑ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค! ์ค‘์ฒฉ ํด๋ž˜์Šค๋Š” ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์„ ์–ธ๋˜๋Š” ์œ„์น˜์— ๋”ฐ๋ผ์„œ ๋‘ ๊ฐ€์ง€๋กœ ๋ถ„๋ฅ˜๋œ๋‹ค. ํด๋ž˜์Šค์˜ ๋ฉค๋ฒ„๋กœ์„œ ์„ ์–ธ๋˜๋Š” ์ค‘์ฒฉ ํด๋ž˜์Šค๋ฅผ ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋ผ๊ณ  ํ•˜๊ณ , ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์„ ์–ธ๋˜๋Š” ์ค‘์ฒฉ ํด๋ž˜์Šค๋ฅผ ๋กœ์ปฌ ํด๋ž˜์Šค๋ผ๊ณ  ํ•œ๋‹ค. ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋Š” ๊ฐ์ฒด๊ฐ€ ์‚ฌ์šฉ ์ค‘์ผ๋•Œ๋Š” ์–ธ์ œ๋“ ์ง€ ์žฌ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ, ๋กœ์ปฌ ํด๋ž˜์Šค๋Š” ๋ฉ”์†Œ๋“œ ์‹คํ–‰ ์‹œ์—๋งŒ ์‚ฌ์šฉ๋˜๊ณ , ๋ฉ”์†Œ๋“œ๊ฐ€ ์‹คํ–‰ ์ข…๋ฃŒ๋˜๋ฉด ์—†์–ด์ง„๋‹ค. public class A { class B {...} // ์ธ์Šคํ„ด์Šค ๋ฉค๋ฒ„ ํด๋ž˜์Šค static class C {...} // ์ •์  ๋ฉค๋ฒ„ ํด๋ž˜์Šค void method() { class D {...} } // ๋กœ์ปฌ ํด๋ž˜์Šค } ๋ฉค๋ฒ„ ํด๋ž˜์Šค๋„ ํ•˜๋‚˜์˜ ํด๋ž˜์Šค์ด๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผํ•˜๋ฉด ๋ฐ”์ดํŠธ ์ฝ”๋“œ ํŒŒ์ผ(.clas..

Tutorials/Java 2021. 9. 17. 17:58
8-2. ์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค : ์ธํ„ฐํŽ˜์ด์Šค ์ƒ์†, ๋””ํดํŠธ ๋ฉ”์†Œ๋“œ์™€ ์ธํ„ฐํŽ˜์ด์Šค ํ™•์žฅ

์ธํ„ฐํŽ˜์ด์Šค ์ƒ์† ์ธํ„ฐํŽ˜์ด์Šค๋„ ๋‹ค๋ฅธ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ƒ์†ํ•  ์ˆ˜ ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํด๋ž˜์Šค์™€๋Š” ๋‹ฌ๋ฆฌ ๋‹ค์ค‘ ์ƒ์†์„ ํ—ˆ์šฉํ•œ๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด extends ํ‚ค์›Œ๋“œ ๋’ค์— ์ƒ์†ํ•  ์ธํ„ฐํŽ˜์ด์Šค๋“œ์„ ๋‚˜์—ดํ•  ์ˆ˜ ์žˆ๋‹ค. public interface ํ•˜์œ„์ธํ„ฐํŽ˜์ด์Šค extends ์ƒ์œ„์ธํ„ฐํŽ˜์ด์Šค1, ์ƒ์œ„์ธํ„ฐํŽ˜์ด์Šค2 {...} ํ•˜์œ„ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ํด๋ž˜์Šค๋Š” ํ•˜์œ„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ฉ”์†Œ๋“œ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค์˜ ๋ชจ๋“  ์ถ”์ƒ ๋ฉ”์†Œ๋“œ์— ๋Œ€ํ•œ ์‹ค์ฒด ๋ฉ”์†Œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ๊ตฌํ˜„ ํด๋ž˜์Šค๋กœ๋ถ€ํ„ฐ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ  ๋‚˜์„œ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•˜์œ„ ๋ฐ ์ƒ์œ„ ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์œผ๋กœ ๋ณ€ํ™˜์ด ๊ฐ€๋Šฅํ•˜๋‹ค. ํ•˜์œ„์ธํ„ฐํŽ˜์ด์Šค ๋ณ€์ˆ˜ = new ๊ตฌํ˜„ํด๋ž˜์Šค(...); ์ƒ์œ„์ธํ„ฐํŽ˜์ด์Šค1 ๋ณ€์ˆ˜ = new ๊ตฌํ˜„ํด๋ž˜์Šค(...); ์ƒ์œ„์ธํ„ฐํŽ˜์ด์Šค2 ๋ณ€์ˆ˜ = new ๊ตฌํ˜„ํด๋ž˜..

Tutorials/Java 2021. 9. 15. 23:37
8-1. ์ž๋ฐ” ์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ• ๊ณผ ์„ ์–ธ, ๊ตฌํ˜„ ์˜ˆ์ œ ์‚ดํŽด๋ณด๊ธฐ

์ธํ„ฐํŽ˜์ด์Šค์˜ ์—ญํ•  ์ธํ„ฐํŽ˜์ด์Šค๋Š” ๊ฐ์ฒด์˜ ์‚ฌ์šฉ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•œ ํƒ€์ž…์ด๋‹ค. ๊ฐœ๋ฐœ ์ฝ”๋“œ๊ฐ€ ์ค‘๊ฐ„์— ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ๋‘๋Š” ์ด์œ ๋Š”, ๊ฐœ๋ฐœ ์ฝ”๋“œ๋ฅผ ์ˆ˜์ •ํ•˜์ง€ ์•Š๊ณ , ์‚ฌ์šฉํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๊ธฐ ์œ„ํ•ด์„œ์ด๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค๋Š” ํ•˜๋‚˜์˜ ๊ฐ์ฒด๊ฐ€ ์•„๋‹ˆ๋ผ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋“ค๊ณผ ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์–ด๋–ค ๊ฐ์ฒด๋ฅผ ์‚ฌ์šฉํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ์‹คํ–‰ ๋‚ด์šฉ๊ณผ ๋ฆฌํ„ด๊ฐ’์ด ๋‹ค๋ฅผ ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ ๊ฐœ๋ฐœ ์ฝ”๋“œ ์ธก๋ฉด์—์„œ ์ฝ”๋“œ ๋ณ€๊ฒฝ ์—†์ด ์‹คํ–‰ ๋‚ด์šฉ๊ณผ ๋ฆฌํ„ด๊ฐ’์„ ๋‹ค์–‘ํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์žฅ์ ์ด ์žˆ๋‹ค. ์ธํ„ฐํŽ˜์ด์Šค ์„ ์–ธ ์ธํ„ฐํŽ˜์ด์Šค๋Š” "~.java" ํ˜•ํƒœ์˜ ์†Œ์Šค ํŒŒ์ผ๋กœ ์ž‘์„ฑ๋˜๊ณ  ์ปดํŒŒ์ผ๋Ÿฌ(javac.exe)๋ฅผ ํ†ตํ•ด "~.class" ํ˜•ํƒœ๋กœ ์ปดํŒŒ์ผ๋˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฌผ๋ฆฌ์  ํ˜•ํƒœ๋Š” ํด๋ž˜์Šค์™€ ๋™์ผํ•˜๋‹ค. public interface InterfaceName { ... } ์ธํ„ฐํŽ˜์ด์Šค๋Š” ์ƒ์ˆ˜์™€ ๋ฉ”์†Œ๋“œ๋งŒ์„..

Tutorials/Java 2021. 9. 15. 17:58
7. ์ž๋ฐ”์˜ ์ƒ์† : ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹คํ˜•์„ฑ

ํƒ€์ž… ๋ณ€ํ™˜๊ณผ ๋‹คํ˜•์„ฑ (Polymorphism) ๋‹คํ˜•์„ฑ์€ ๊ฐ™์€ ํƒ€์ž…์ด์ง€๋งŒ ์‹คํ–‰ ๊ฒฐ๊ณผ๊ฐ€ ๋‹ค์–‘ํ•œ ๊ฐ์ฒด๋ฅผ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์„ฑ์งˆ์„ ๋งํ•œ๋‹ค. ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜(Promotion) ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์˜ ๊ฐœ๋…์€ ์ž์‹์€ ๋ถ€๋ชจ์˜ ํŠน์ง•๊ณผ ๊ธฐ๋Šฅ์„ ์ƒ์†๋ฐ›๊ธฐ ๋•Œ๋ฌธ์— ๋ถ€๋ชจ์™€ ๋™์ผํ•˜๊ฒŒ ์ทจ๊ธ‰๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. // Vehicle ์ž๋™ ํƒ€์ž… ๋ณ€ํ™˜์ด ๋ฐœ์ƒํ•œ๋‹ค! ์ฆ‰, ๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ํด๋ž˜์Šค์ผ ๊ฒฝ์šฐ, ํ•ด๋‹น ํด๋ž˜์Šค์˜ ๊ฐ์ฒด๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž์‹ ๊ฐ์ฒด๊นŒ์ง€๋„ ๋งค๊ฐœ๊ฐ’์œผ๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค! ๋งค๊ฐœ๊ฐ’์œผ๋กœ ์–ด๋–ค ์ž์‹ ๊ฐ์ฒด๊ฐ€ ์ œ๊ณต๋˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋ฉ”์†Œ๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์–‘ํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค(๋งค๊ฐœ ๋ณ€์ˆ˜์˜ ๋‹คํ˜•์„ฑ). ์ž์‹ ๊ฐ์ฒด๊ฐ€ ๋ถ€๋ชจ์˜ ๋ฉ”์†Œ๋“œ๋ฅผ ์žฌ์ •์˜(์˜ค๋ฒ„๋ผ์ด๋”ฉ)ํ–ˆ๋‹ค๋ฉด ๋ฉ”์†Œ๋“œ ๋‚ด๋ถ€์—์„œ ์˜ค๋ฒ„๋ผ์ด๋”ฉ๋œ ๋ฉ”์†Œ๋“œ๋ฅผ ํ˜ธ์ถœํ•จ์œผ๋กœ์จ ๋ฉ”์†Œ๋“œ์˜ ์‹คํ–‰ ๊ฒฐ๊ณผ๋Š” ๋‹ค์–‘ํ•ด์ง„๋‹ค. ๊ฐ•์ œ ํƒ€์ž… ๋ณ€ํ™˜ ๊ฐ•์ œ ..

Tutorials/Java 2021. 9. 15. 00:08
6-3. ์–ด๋…ธํ…Œ์ด์…˜(Annotation) : ์ž๋ฐ” ์–ด๋…ธํ…Œ์ด์…˜ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ

์–ด๋…ธํ…Œ์ด์…˜ ์–ด๋…ธํ…Œ์ด์…˜์€ ๋ฉ”ํƒ€๋ฐ์ดํ„ฐ๋ผ๊ณ  ๋ณผ์ˆ˜ ์žˆ๋‹ค. @AnnotationName ์–ด๋…ธํ…Œ์ด์…˜์€ ๋‹ค์Œ ์„ธ ๊ฐ€์ง€ ์šฉ๋„๋กœ ์‚ฌ์šฉ๋œ๋‹ค. 1. ์ปดํŒŒ์ผ๋Ÿฌ์—๊ฒŒ ์ฝ”๋“œ ๋ฌธ๋ฒ• ์—๋Ÿฌ๋ฅผ ์ฒดํฌํ•˜๋„๋ก ์ •๋ณด๋ฅผ ์ œ๊ณต 2. ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ ํˆด์ด ๋นŒ๋“œ๋‚˜ ๋ฐฐ์น˜ ์‹œ ์ฝ”๋“œ๋ฅผ ์ž๋™์œผ๋กœ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋„๋ก ์ •๋ณด๋ฅผ ์ œ๊ณต 3. ์‹คํ–‰ ์‹œ(๋Ÿฐํƒ€์ž„ ์‹œ) ํŠน์ • ๊ธฐ๋Šฅ์„ ์‹คํ–‰ํ•˜๋„๋ก ์ •๋ณด๋ฅผ ์ œ๊ณต ๋Œ€ํ‘œ์ ์œผ๋กœ๋Š” @Override๊ฐ€ ์žˆ๋‹ค. (์ƒ์† ๋ฉ”์†Œ๋“œ ์žฌ์ •์˜ ์‹œ) ์–ด๋…ธํ…Œ์ด์…˜ ํƒ€์ž… ์ •์˜์™€ ์ ์šฉ ์–ด๋…ธํ…Œ์ด์…˜ ํƒ€์ž…์˜ ์ •์˜๋Š” ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฒƒ๊ณผ ์œ ์‚ฌํ•˜๋‹ค. ๋‹ค์Œ๊ณผ ๊ฐ™์ด @interface๋ฅผ ์‚ฌ์šฉํ•ด์„œ ์–ด๋…ธํ…Œ์ด์…˜์„ ์ •์˜ํ•˜๋ฉฐ, ๊ทธ ๋’ค์— ์‚ฌ์šฉํ•  ์–ด๋…ธํ…Œ์ด์…˜ ์ด๋ฆ„์ด ์˜จ๋‹ค. public @interface AnnotationName { ํƒ€์ž… elementName() [default ๊ฐ’]..

Tutorials/Java 2021. 9. 14. 17:23
6-2. ํŒจํ‚ค์ง€ : ์ž๋ฐ” ํŒจํ‚ค์ง€์˜ ๊ฐœ๋…๊ณผ ์˜ˆ์ œ

ํŒจํ‚ค์ง€ ์ž๋ฐ”์—์„œ๋Š” ํด๋ž˜์Šค๋ฅผ ์ฒด๊ณ„์ ์œผ๋กœ ๊ด€๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด ํŒจํ‚ค์ง€๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. ํŒจํ‚ค์ง€์˜ ๋ฌผ๋ฆฌ์ ์ธ ํ˜•ํƒœ๋Š” ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํด๋”์ด๋‹ค. ํŒจํ‚ค์ง€๋Š” ๋‹จ์ˆœํžˆ ํŒŒ์ผ ์‹œ์Šคํ…œ์˜ ํด๋” ๊ธฐ๋Šฅ๋งŒ ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ํด๋ž˜์Šค์˜ ์ผ๋ถ€๋ถ„์ด๋‹ค. ํŒจํ‚ค์ง€๋Š” ํด๋ž˜์Šค๋ฅผ ์œ ์ผํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‹๋ณ„์ž ์—ญํ• ์„ ํ•œ๋‹ค. ํŒจํ‚ค์ง€๋Š” ํด๋ž˜์Šค๋ฅผ ์œ ์ผํ•˜๊ฒŒ ๋งŒ๋“ค์–ด์ฃผ๋Š” ์‹๋ณ„์ž ์—ญํ• ์„ ํ•œ๋‹ค. ํด๋ž˜์Šค ์ด๋ฆ„์ด ๋™์ผํ•˜๋”๋ผ๋„ ํŒจํ‚ค์ง€๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋‹ค๋ฅธ ํด๋ž˜์Šค๋กœ ์ธ์‹ํ•œ๋‹ค. ํด๋ž˜์Šค์˜ ์ „์ฒด ์ด๋ฆ„์€ "ํŒจํ‚ค์ง€๋ช…+ํด๋ž˜์Šค๋ช…"์ธ๋ฐ, ํŒจํ‚ค์ง€๊ฐ€ ์ƒ/ํ•˜์œ„๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ๋‹ค๋ฉด ๋„ํŠธ(.)๋ฅผ ์ด์šฉํ•ด ํ‘œํ˜„ํ•œ๋‹ค. ์ƒ์œ„ํŒจํ‚ค์ง€.ํ•˜์œ„ํŒจํ‚ค์ง€.ํด๋ž˜์Šค ํด๋ž˜์Šค๋ฅผ ์ด๋™์‹œํ‚ฌ ๋•Œ๋Š” ํŒจํ‚ค์ง€ ์ „์ฒด๋ฅผ ์ด๋™์‹œ์ผœ์•ผ ํ•œ๋‹ค. ์ฆ‰, myPackage ๋‚ด์˜ myClass๋ฅผ yourPackage๋กœ ์˜ฎ๊ธด๋‹ค๋ฉด, ํ•ด๋‹น ํด๋ž˜์Šค๋Š” ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๊ฒŒ ๋œ๋‹ค! ํŒจํ‚ค์ง€ ..

Tutorials/Java 2021. 9. 14. 16:47
6-1. ์ •์  ๋ฉค๋ฒ„์™€ static : ์ •์  ๋ฉ”์†Œ๋“œ, ์ •์  ์ดˆ๊ธฐํ™” ๋ธ”๋ก, ์‹ฑ๊ธ€ํ†ค

์ •์ (static) ์ •์  ๋ฉค๋ฒ„๋Š” ํด๋ž˜์Šค์— ๊ณ ์ •๋œ ๋ฉค๋ฒ„๋กœ์„œ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ณ  ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ํ•„๋“œ์™€ ๋ฉ”์†Œ๋“œ๋ฅผ ๋งํ•œ๋‹ค. ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋”ฉ๋˜๋ฉด ์ •์  ๋ฉค๋ฒ„๋ฅผ ๋ฐ”๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”๋ฐ, ํด๋ž˜์Šค ์ด๋ฆ„๊ณผ ํ•จ๊ป˜ ๋„ํŠธ(.) ์—ฐ์‚ฐ์ž๋กœ ์ ‘๊ทผํ•œ๋‹ค. int a = myClass.value; myClass.doSomething(a); ์ •์  ์ดˆ๊ธฐํ™” ๋ธ”๋ก ์ •์  ํ•„๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ•„๋“œ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐ๊ฐ’์„ ์ฃผ๋Š” ๊ฒƒ์ด ๋ณดํ†ต์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๊ณ„์‚ฐ์ด ํ•„์š”ํ•œ ์ดˆ๊ธฐํ™” ์ž‘์—…์˜ ๊ฒฝ์šฐ, ์ •์  ๋ธ”๋ก(static block)์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. static { ... } ์ •์  ๋ธ”๋ก์€ ํด๋ž˜์Šค๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ๋กœ ๋กœ๋”ฉ๋  ๋•Œ ์ž๋™์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค. ์ •์  ๋ธ”๋ก์€ ํด๋ž˜์Šค ๋‚ด๋ถ€์— ์—ฌ๋Ÿฌ ๊ฐœ๊ฐ€ ์„ ์–ธ๋˜์–ด๋„ ์ƒ๊ด€์—†๊ณ , ์„ ์–ธ๋œ ์ˆœ์„œ๋Œ€๋กœ ์‹คํ–‰๋œ๋‹ค. public class TV..

Tutorials/Java 2021. 9. 14. 15:02
5. ์ž๋ฐ” ์ฐธ์กฐ ํƒ€์ž… : ๋ฐ์ดํ„ฐ ํƒ€์ž…๊ณผ ๋ฉ”๋ชจ๋ฆฌ

๋ฐ์ดํ„ฐ ํƒ€์ž… ๋ฐ์ดํ„ฐ ํƒ€์ž…์€ primitive type๊ณผ reference type(์ฐธ์กฐ ํƒ€์ž…)์œผ๋กœ ๋‚˜๋‰œ๋‹ค. ์ฐธ์กฐ ํƒ€์ž…์ด๋ž€ ๊ฐ์ฒด์˜ ๋ฒˆ์ง€๋ฅผ ์ฐธ์กฐํ•˜๋Š” ํƒ€์ž…์œผ๋กœ, ๋ฐฐ์—ด, ์—ด๊ฑฐ, ํด๋ž˜์Šค, ์ธํ„ฐํŽ˜์ด์Šค ํƒ€์ž…์ด ์ด์— ํ•ด๋‹น๋œ๋‹ค. ์ž๋ฐ”๋Š” ๋ฐฐ์—ด์˜ ์ฃผ์†Œ๋ฅผ ์Šคํƒ ์˜์—ญ์—, ์‹ค์ œ ๋ฐ์ดํ„ฐ ๊ฐ’์€ ํž™ ์˜์—ญ์— ํ• ๋‹นํ•œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์˜์—ญ JVM์€ ์šด์˜์ฒด์ œ์—์„œ ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(Runtime Data Area)๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ตฌ๋ถ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค. 1. ๋ฉ”์†Œ๋“œ ์˜์—ญ : ์ฝ”๋“œ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ํด๋ž˜์Šค(~.class)๋“ค์„ ํด๋ž˜์Šค ๋กœ๋”๋กœ ์ฝ์–ด ํด๋ž˜์Šค๋ณ„๋กœ ๋Ÿฐํƒ€์ž„ ์ƒ์ˆ˜ํ’€(runtime constant pool), ํ•„๋“œ(fiedl) ๋ฐ์ดํ„ฐ, ๋ฉ”์†Œ๋“œ(method) ๋ฐ์ดํ„ฐ, ๋ฉ”์†Œ๋“œ ์ฝ”๋“œ, ์ƒ์„ฑ์ž(constructor) ์ฝ”๋“œ ๋“ฑ์„ ๋ถ„๋ฅ˜ํ•ด์„œ ์ €์žฅํ•œ๋‹ค. ๋ฉ”์†Œ๋“œ ์˜..

Tutorials/Java 2021. 9. 14. 14:39