์ „์ฒด ๊ธ€

์ž๋ฐ” ๊ฐ•์˜ 4์ฃผ์ฐจ ์ œ๋„ค๋ฆญ ๋ถ€๋ถ„๊ณผ 5์ฃผ์ฐจ ์“ฐ๋ ˆ๋“œ ๋ถ€๋ถ„์„ ๋‹ค ๋“ค์—ˆ๋”ฐ!!! ์‚ฌ์‹ค ์ด ๋‘ ๊ฐœ๋…์€ ์•Œ๊ธด์•Œ๊ณ  ๋ญ”๊ฐ€ ๋Œ€๊ฐ• ๊ฐ์€ ์˜ค๋Š”๋ฐ..... ์ •ํ™•ํ•˜๊ณ  ์ƒ์„ธํ•˜๊ฒŒ ์‚ฌ์šฉํ•˜๊ธฐ์—๋Š” ์ข€ ์–ด๋ ต๋‹ค.... ์ด๋ฒˆ ๊ฐ•์˜๋กœ ์ „๋ถ€ ์™„๋ฒฝํžˆ ์•Œ์•˜๋‹ค๊ณ  ํ•˜๋ฉด ๊ทธ๊ฑด ๋„ˆ๋ฌด ๊ฑฐ์ง“๋ง... ใ…Ž๐Ÿ˜ญ ๊ทธ๋ž˜๋„ ๊ธฐ์กด๋ณด๋‹ค ์–ด๋Š์ •๋„ ๋ฉ”์„œ๋“œ๋‚˜ ๊ฐœ๋…์€ ์žก์€ ๋Š๋‚Œ !! ์ถ”ํ›„์— ์ข€ ๋” ๊ณต๋ถ€ํ•˜๊ณ , ์‹ค์Šตํ•ด์„œ ํ™•์‹คํžˆ ์žก์ž! https://hyeyun.tistory.com/entry/JAVA-4%EC%A3%BC%EC%B0%A8-%EC%A0%9C%EB%84%A4%EB%A6%AD JAVA 4์ฃผ์ฐจ: ์ œ๋„ค๋ฆญ Generic public class Generic { ... } Generic stringGeneric = new Generic(); Generic ์˜ ํด๋ž˜์Šค์ฒ˜๋Ÿผ, ์ œ๋„ค..
๐Ÿ‘ท ์“ฐ๋ ˆ๋“œ(์ผ๊พผ) ํ”„๋กœ์„ธ์Šค์™€ ์“ฐ๋ ˆ๋“œ ๐Ÿ“Œ ํ”„๋กœ์„ธ์Šค vs ์“ฐ๋ ˆ๋“œ ํ”„๋กœ์„ธ์Šค : ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ ์ž์›์„ ํ• ๋‹น๋ฐ›๋Š” ์ž‘์—…์˜ ๋‹จ์œ„ ์“ฐ๋ ˆ๋“œ : ํ”„๋กœ์„ธ์Šค๊ฐ€ ํ• ๋‹น๋ฐ›์€ ์ž์›์„ ์ด์šฉํ•˜๋Š” ์‹คํ–‰์˜ ๋‹จ์œ„ ํ”„๋กœ์„ธ์Šค ์‹คํ–‰์ค‘์ธ ํ”„๋กœ๊ทธ๋žจ์„ ์˜๋ฏธ OS ์œ„์—์„œ ์‹คํ–‰๋˜๋Š” ๋ชจ๋“  ํ”„๋กœ๊ทธ๋žจ์€ OS๊ฐ€ ๋งŒ๋“ค์–ด์ค€ ํ”„๋กœ์„ธ์Šค์—์„œ ์‹คํ–‰๋จํ”„๋กœ์„ธ์Šค ๊ตฌ์กฐ OS๊ฐ€ ํ”„๋กœ๊ทธ๋žจ ์‹คํ–‰์„ ์œ„ํ•œ ํ”„๋กœ์„ธ์Šค๋ฅผ ํ• ๋‹นํ•ด์ค„๋•Œ ํ”„๋กœ์„ธ์Šค ์•ˆ์— ํ”„๋กœ๊ทธ๋žจ code์™€ data ๊ทธ๋ฆฌ๊ณ  ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ(stack, heap)์„ ํ•จ๊ป˜ ํ• ๋‹น code ๋Š” java main ๋ฉ”์†Œ๋“œ์™€ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ์˜๋ฏธ data๋Š” ํ”„๋กœ๊ทธ๋žจ์ด ์‹คํ–‰ ์ค‘ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ์ €์žฅ ๊ณต๊ฐ„์„ ์˜๋ฏธ ์ „์—ญ ๋ณ€์ˆ˜, ์ •์  ๋ณ€์ˆ˜(static), ๋ฐฐ์—ด ๋“ฑ ์ดˆ๊ธฐํ™”๋œ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๊ณต๊ฐ„ memory stack : ์ง€์—ญ ๋ณ€์ˆ˜, ๋งค๊ฐœ๋ณ€์ˆ˜, ๋ฆฌํ„ด ๋ณ€์ˆ˜๋ฅผ ์ €์žฅ..
Generic public class Generic { ... } Generic stringGeneric = new Generic(); Generic ์˜ ํด๋ž˜์Šค์ฒ˜๋Ÿผ, ์ œ๋„ค๋ฆญ์„ ์‚ฌ์šฉํ•œ ํด๋ž˜์Šค๋ฅผ ์ œ๋„ค๋ฆญ ํด๋ž˜์Šค๋ผ๊ณ  ํ•จ ์ œ๋„ค๋ฆญ์—์„œ ์‚ฌ์ด์— ๋“ค์–ด๊ฐ€๋Š” ๋ณ€์ˆ˜๋ช… T๋Š” ํƒ€์ž… ๋ณ€์ˆ˜๋ผ๊ณ  ํ•จ Generic ํด๋ž˜์Šค๋ฅผ ์›์‹œ ํƒ€์ž…์ด๋ผ๊ณ  ํ•จ ์ œํ•œ ๊ฐ์ฒด์˜ static ๋ฉค๋ฒ„์— ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ํƒ€์ž… ๋ณ€์ˆ˜๋Š” ์ธ์Šคํ„ด์Šค ๋ณ€์ˆ˜๋กœ ๊ฐ„์ฃผ๋˜๊ณ , ๋ชจ๋“  ๊ฐ์ฒด์— ๋™์ผํ•˜๊ฒŒ ๋™์ž‘ํ•ด์•ผํ•˜๋Š” static ํ•„๋“œ ํŠน์„ฑ์ƒ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ ์ œ๋„ค๋ฆญ ๋ฐฐ์—ด์„ ์ƒ์„ฑํ•  ์ˆ˜ ์—†์Œ ๋ฌธ๋ฒ• ๋‹ค์ˆ˜์˜ ํƒ€์ž… ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ public class Generics { public E multiTypeMethod(T t, U u) { ... } } Generic instance ..
์˜ˆ์™ธ์ฒ˜๋ฆฌ ์˜ค๋ฅ˜(Error) vs ์˜ˆ์™ธ(Exception) ๊ฐ€์žฅ ์ค‘์š”ํ•œ ๊ธฐ์ค€์€ ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต ๊ฐ€๋Šฅ ์—ฌ๋ถ€ ์˜ค๋ฅ˜(Error) ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ ์‹œ์Šคํ…œ ๋ ˆ๋ฒจ์—์„œ, ๋˜๋Š” ์ฃผ๋กœ ํ™˜๊ฒฝ์ ์ธ ์ด์œ ๋กœ ๋ฐœ์ƒ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•œ ๊ฒฝ์šฐ ์–ด๋– ํ•œ ์—๋Ÿฌ๋กœ ํ”„๋กœ๊ทธ๋žจ์ด ์ข…๋ฃŒ๋˜์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๊ณ  ๋Œ€์‘ ์˜ˆ์™ธ(Exception) ์ผ๋ฐ˜์ ์œผ๋กœ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•œ ๋ฌธ์ œ ํšŒ๋ณต์ด ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ์ „์ œ๋Š” ๊ทธ ์˜ˆ์™ธ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ์ธ์ง€ํ•˜๊ณ , ๋Œ€์‘ํ–ˆ์„ ๊ฒƒ ์ฝ”๋“œ๋ ˆ๋ฒจ์—์„œ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ƒํ™ฉ์— ๋Œ€ํ•œ ๋Œ€์‘์€ ์˜ˆ์™€ ์ฒ˜๋ฆฌ์— ์†ํ•จ ์˜ˆ์™ธ์˜ ์ข…๋ฅ˜ ์ฝ”๋“œ์‹คํ–‰ ๊ด€์ ์—์„œ ์˜ˆ์™ธ์˜ ์ข…๋ฅ˜ ์ปดํŒŒ์ผ ์—๋Ÿฌ(์˜ˆ์™ธ) .java -> .class ๋กœ ์ปดํŒŒ์ผํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ์—๋Ÿฌ ๋Œ€๋ถ€๋ถ„ ์ž๋ฐ” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์˜ ๊ทœ์น™์„ ์ง€ํ‚ค์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฐœ์ƒ ์˜ˆ) ์žˆ์ง€ ์•Š์€ ํด๋ž˜์Šค๋ฅผ ํ˜ธ์ถœ, ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅ..
๋‚ด๋ฐฐ์บ  ๊ฐœ์ธ ๊ณผ์ œ ์ง„ํ–‰ ํ•„์ˆ˜ ์š”๊ตฌ์‚ฌํ•ญ ๋ฉ”๋‰ด ํด๋ž˜์Šค : ์ด๋ฆ„, ์„ค๋ช… ํ•„๋“œ ์ƒํ’ˆ ํด๋ž˜์Šค : ์ด๋ฆ„, ๊ฐ€๊ฒฉ, ์„ค๋ช… ํ•„๋“œ / ๋ฉ”๋‰ด ํด๋ž˜์Šค๋ฅผ ์ƒ์†๋ฐ›๊ธฐ ์ฃผ๋ฌธ ํด๋ž˜์Šค : ์ƒํ’ˆ ๊ฐ์ฒด ๋‹ด๊ธฐ ๋ฉ”์ธ ๋ฉ”๋‰ดํŒ ํ™”๋ฉด ์ƒํ’ˆ ๋ฉ”๋‰ดํŒ ํ™”๋ฉด ๊ตฌ๋งค ํ™”๋ฉด ์ฃผ๋ฌธ ํ™”๋ฉด ์ฃผ๋ฌธ ์™„๋ฃŒ ํ™”๋ฉด ์ฃผ๋ฌธ ์ทจ์†Œ ํ™”๋ฉด ์„ ํƒ ์š”๊ตฌ์‚ฌํ•ญ ์ฃผ๋ฌธ ๊ฐœ์ˆ˜ ๊ธฐ๋Šฅ ์ƒํ’ˆ ์˜ต์…˜ ๊ธฐ๋Šฅ ์ด ํŒ๋งค๊ธˆ์•ก/์ƒํ’ˆ ์กฐํšŒ ๊ธฐ๋Šฅ ํ•„์ˆ˜์™€ ์„ ํƒ ๋ชจ๋‘ ๊ตฌํ˜„ํ–ˆ๋‹ค.๐Ÿ‘ ๊ทธ๋Ÿฐ๋ฐ ์ฝ”๋“œ๊ฐ€ ์ข€ ๋งˆ๋‹ˆ... ์ง€์ €๋ถ„ํ•œ๊ฑฐ ๊ฐ™์•„์„œ ์†์ƒํ•˜๊ธด ํ•˜๋‹ค....๐Ÿ˜ญ ํŠนํžˆ ์„ค๋ช…์ด ๋ญ”๊ฐ€ ๋‚ด๊ฐ€ ํ—ท๊ฐˆ๋ฆฌ๋Š” ๋ถ€๋ถ„๋“ค์ด ๋ช…ํ™•ํžˆ ๋‚˜์™€์žˆ์ง€ ์•Š์•„ ๊ทธ๋žฌ๋‹น... ๊ทธ๋ž˜๋„ ๊ฝค๋‚˜ ๊ดœ์ฐฎ๊ฒŒ ๋งŒ๋“ ๊ฑฐ๊ฐ™์€๋ฐ;; ์ œ์ถœํ–ˆ์œผ๋‹ˆ ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›๊ณ  ์กฐ๊ธˆ ๋” ์ข‹๊ฒŒ ๊ณ ์ณ๋ด์•ผ๊ฒ ๋‹น ํŠนํžˆ ์ถœ๋ ฅ์—์„œ | ๋ถ€๋ถ„์ด ์ผ์ž๋กœ ์ญˆ์šฐ์šฑ ์ด์˜๊ฒŒ ๋งž์ถฐ์ง€๊ฒŒ ํ•˜๊ณ  ์‹ถ์–ด์„œ, ์—ฌํƒœ ๋ณ„๋กœ ์‹ ๊ฒฝ๋„ ์•ˆ์“ฐ๋˜ printf์˜ %-..
ํด๋ž˜์Šค ๊ฐ์ฒด ๊ฐ์ฒด๋Š” ์„ธ์ƒ์— ์กด์žฌํ•˜๋Š” ๋ฌผ์ฒด๋ฅผ ๋œปํ•˜๋ฉฐ ์‹๋ณ„์ด ๊ฐ€๋Šฅํ•œ ๊ฒƒ์„ ์˜๋ฏธ ๊ฐ์ฒด๋Š” ์†์„ฑ๊ณผ ํ–‰์œ„๋กœ ๊ตฌ์„ฑ Java์—์„œ๋Š” ์ด๋Ÿฌํ•œ ์†์„ฑ๊ณผ ํ–‰์œ„๋ฅผ ํ•„๋“œ์™€ ๋ฉ”์„œ๋“œ๋กœ ์ •์˜ํ•˜์—ฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ ํ˜„์‹ค ์„ธ๊ณ„ ๊ฐ์ฒด -> ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐ์ฒด : ๊ฐ์ฒด ๋ชจ๋ธ๋ง ๊ฐ์ฒด ๊ฐ„์˜ ํ˜‘๋ ฅ ํ–‰์œ„๋ฅผ ์ •์˜ํ•˜๋Š” Java์˜ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ด๋ฃจ์–ด์ง ๊ฐ์ฒด๋“ค์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฃผ๊ณ  ๋ฐ›์„ ์ˆ˜ ์žˆ์Œ ์ด ๋ฐ์ดํ„ฐ๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ ํ˜น์€ ๋งค๊ฐœ๊ฐ’์ด๋ผ๊ณ  ํ‘œํ˜„ ๊ฐ์ฒด ๊ฐ„์˜ ๊ด€๊ณ„ ๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์˜ ํŠน์ง• ์บก์Šํ™” ์†์„ฑ(ํ•„๋“œ)์™€ ํ–‰์œ„(๋ฉ”์„œ๋“œ)๋ฅผ ํ•˜๋‚˜๋กœ ๋ฌถ์–ด ๊ฐ์ฒด๋กœ ๋งŒ๋“  ํ›„ ์‹ค์ œ ๋‚ด๋ถ€ ๊ตฌํ˜„ ๋‚ด์šฉ์€ ์™ธ๋ถ€์—์„œ ์•Œ ์ˆ˜ ์—†๊ฒŒ ๊ฐ์ถ”๋Š” ๊ฒƒ ๋‚ด๋ถ€ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋…ธ์ถœ์‹œ์ผœ ์ค€ ํ•„๋“œ ํ˜น์€ ๋ฉ”์„œ๋“œ๋ฅผ ํ†ตํ•ด ์ ‘๊ทผ ๊ฐ€๋Šฅ ์™ธ๋ถ€ ๊ฐ์ฒด์—์„œ ๊ฐ์ฒด๋ฅผ ๋ณ€ํ•˜๊ฒŒ ๋งŒ๋“ค์ง€ ์•Š๊ฒŒ ํ•˜๊ธฐ ์œ„ํ•จ ๋…ธ์ถœ์‹œํ‚ฌ ์ง€ ๊ฐ์ถœ ์ง€ ๊ฒฐ..
์—ฐ์‚ฐ์ž ๋น„ํŠธ ์—ฐ์‚ฐ 1 Byte = 8 Bits Bit๋Š” 0, 1 ๋‘˜ ์ค‘์˜ ํ•˜๋‚˜์˜ ๊ฐ’๋งŒ์„ ์ €์žฅํ•˜๋Š” ์ปดํ“จํ„ฐ๊ฐ€ ์ €์žฅ(ํ‘œํ˜„)๊ฐ€๋Šฅํ•œ ๊ฐ€์žฅ ์ž‘์€ ๋‹จ์œ„ ์—ฐ์‚ฐ ์ค‘ Bit ์—ฐ์‚ฐ์ด ๊ฐ€์žฅ ๋น ๋ฆ„ 0, 1์€ 2์ง„์ˆ˜ ๊ฐ’์ด๊ธฐ ๋•Œ๋ฌธ์—, ์ž๋ฆฌ์ˆ˜๋ฅผ ์™ผ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ํšŸ์ˆ˜๋งŒํผ 2์˜ ๋ฐฐ์ˆ˜๋กœ ๊ณฑ์…ˆ์ด ์—ฐ์‚ฐ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ ์ž๋ฆฌ์ˆ˜๋ฅผ ์˜ค๋ฅธ์ชฝ์œผ๋กœ ์˜ฎ๊ธฐ๋Š” ํšŸ์ˆ˜๋งŒํผ 2์˜ ๋ฐฐ์ˆ˜๋กœ ๋‚˜๋ˆ—์…ˆ์ด ์—ฐ์‚ฐ๋˜๋Š” ๊ฒƒ๊ณผ ๋™์ผ ์ปฌ๋ ‰์…˜ ๐Ÿงฌ Java ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฐฐ์—ด์„ ๋” ๊ณ ๋„ํ™”์‹œ์ผœ์„œ ์ปฌ๋ ‰์…˜์ด๋ผ๋Š” ์ด๋ฆ„์œผ๋กœ ์ฐธ์กฐํ˜• ์ž๋ฃŒ๊ตฌ์กฐ๋ฅผ ์ œ๊ณตํ•˜๊ณ  ์žˆ๋‹ค. ์ปฌ๋ ‰์…˜์€ ์ฐธ์กฐํ˜• ๋ณ€์ˆ˜๋งŒ ์ €์žฅํ•จ์œผ๋กœ์จ ์—ฌ๋Ÿฌ ๊ธฐ๋Šฅ์„ ๋งŽ์ด ์ œ๊ณตํ•จ
JVM Java Virtual Machine ์—ฌ๋Ÿฌ๊ฐ€์ง€ ๊ธฐ๊ธฐ์œ„์— Java ํ”„๋กœ๊ทธ๋žจ์„ ์‹คํ–‰์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ๊ฐ€์ƒ์˜ ๊ธฐ๊ธฐ๋ฅผ ๋งŒ๋“ค์–ด์ฃผ๋Š” ๊ฒƒ์„ ์˜๋ฏธ ๐Ÿ’ก Java ์ปดํŒŒ์ผ๋Ÿฌ๋ž€? ์ž‘์„ฑํ•œ Java ์ฝ”๋“œ(.java ํŒŒ์ผ)์„ ์šด์˜์ฒด์ œ๊ฐ€ ์ฝ์„ ์ˆ˜ ์žˆ๋Š” ๋ฐ”์ดํŠธ ์ฝ”๋“œ(.class ํŒŒ์ผ)๋กœ ๋ณ€ํ™˜ํ•˜๋Š” ๋ณ€ํ™˜๊ธฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ ๐Ÿ“‡ Java .class ์ฝ”๋“œ ํ•ด์„๊ธฐ ์šด์˜์ฒด์ œ๊ฐ€ ์ฝ์€ ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๊ธฐ๊ธฐ(๊ธฐ๊ณ„)๊ฐ€ ์‹คํ–‰ํ•  ์ˆ˜ ์žˆ๋Š” ๊ธฐ๊ณ„์–ด๋กœ ๋ฒˆ์—ญ JIT ์ปดํŒŒ์ผ๋Ÿฌ ๐Ÿ“‡ ๋น ๋ฅธ Java .class ์ฝ”๋“œ ํ•ด์„๊ธฐ ์ธํ„ฐํ”„๋ฆฌํ„ฐ์˜ ํšจ์œจ์„ ๋†’์—ฌ์ฃผ๋Š” ์„œํฌํ„ฐ ํ•ด์„๊ธฐ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ๐Ÿ—‚๏ธ Java ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ์˜์—ญ ์šด์˜์ฒด์ œ๋กœ๋ถ€ํ„ฐ JVM์ด ํ• ๋‹น๋ฐ›์€ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ ํด๋ž˜์Šค ๋กœ๋” ๐Ÿšš Java .class ๋ฐ”์ดํŠธ ์ฝ”๋“œ๋ฅผ ๋ฉ”๋ชจ๋ฆฌ ์˜์—ญ์— ๋‹ด๋Š” ์šด๋ฐ˜๊ธฐ JVM์œผ๋กœ class(๋ฐ”์ดํŠธ ์ฝ”๋“œ)๋ฅผ..
KIMHYEYUN
๐Ÿ’