πŸ“‚ JAVA/μ£Όμš” κ°œλ…

    μžλ°”μ˜ 컴파일 κ³Όμ •

    μžλ°”λŠ” JVM(Java Virtual Machine) 덕뢄에 OS에 독립적인 νŠΉμ§•μ„ 가지고 μžˆλ‹€. JVM의 μ–΄λ– ν•œ κΈ°λŠ₯ λ•Œλ¬Έμ— OS에 λ…λ¦½μ μœΌλ‘œ μ‹€ν–‰μ‹œν‚¬ 수 μžˆλŠ”μ§€ μžλ°”μ˜ 컴파일 과정을 톡해 μ•Œμ•„λ³΄μž. πŸ“™ 1. 컴파일 κ³Όμ • μžλ°”μ˜ 컴파일 과정은 λ‹€μŒκ³Ό κ°™λ‹€. κ°œλ°œμžκ°€ μž‘μ„±ν•œ μžλ°” μ†ŒμŠ€νŒŒμΌ(*. java)을 μžλ°” 컴파일러(Java Compiler)κ°€ λ°”μ΄νŠΈνŒŒμΌ(*.class)둜 μ»΄νŒŒμΌν•œλ‹€. (CPUκ°€ 이해할 수 μžˆλŠ” 언어인 λ°”μ΄λ„ˆλ¦¬ μ½”λ“œκ°€ μ•„λ‹ˆλΌ JVM이 이해할 수 μžˆλŠ” λ°”μ΄νŠΈ μ½”λ“œλ₯Ό 가진 λ°”μ΄νŠΈ 파일둜 λ³€ν™˜ν•œλ‹€.) 클래슀 λ‘œλ”(Class Loader)λ₯Ό 톡해 λ°”μ΄νŠΈ 파일(*.class)듀을 JVM에 μ˜¬λ¦°λ‹€. JVM에 μžˆλŠ” λ°”μ΄νŠΈ 파일(*.class)듀은 μ‹€ν–‰ 엔진(Execution Engine)의 인터프..

    μΆ”μƒν΄λž˜μŠ€(Abstract Class) VS μΈν„°νŽ˜μ΄μŠ€(Interface)

    μ§€κΈˆκΉŒμ§€ μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ‚΄νŽ΄λ³΄μ•˜λ‹€. μΆ”μƒν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€λŠ” 각각 κ³ μœ ν•œ λͺ‡λͺ‡ νŠΉμ§•μ„ 가지고 μžˆμ§€λ§Œ, "좔상 λ©”μ„œλ“œλ₯Ό 톡해 상속/κ΅¬ν˜„μ„ ν†΅ν•œ λ©”μ„œλ“œ κ°•μ œ κ΅¬ν˜„ κ·œμΉ™μ„ κ°€μ§€λŠ” 좔상화 클래슀"λΌλŠ” μ μ—μ„œ 맀우 λΉ„μŠ·ν•˜λ‹€λŠ” λŠλ‚Œμ„ 받을 것이닀. λ˜ν•œ, 'κ·Έλ ‡λ‹€λ©΄ λͺ¨λ“  λ©”μ„œλ“œλ₯Ό 좔상 λ©”μ„œλ“œλ‘œ λ§Œλ“€μ–΄μ„œ μ‚¬μš©ν•˜λ©΄ 좔상 ν΄λž˜μŠ€κ°€ μΈν„°νŽ˜μ΄μŠ€ μ—­ν•  ν•  수 μžˆλŠ”λ° μ™œ ꡳ이 μΈν„°νŽ˜μ΄μŠ€κ°€ μ‘΄μž¬ν•˜λŠ” 걸까? 'λΌλŠ” μ˜λ¬Έλ„ 생길 수 μžˆλ‹€. κΈ°λŠ₯적인 츑면을 λ‹€ μ œμ™Έν•˜κ³ , 두 개λ₯Ό λ‚˜λˆ„μ–΄μ„œ μ‚¬μš©ν•˜λŠ” κ°€μž₯ 큰 μ΄μœ λŠ” μ‚¬μš© λͺ©μ κ³Ό μ‚¬μš© μ‹œκΈ°κ°€ λ‹€λ₯΄λ‹€λŠ” 것이닀. κ·ΈλŸ¬λ―€λ‘œ '좔상 ν΄λž˜μŠ€μ™€ μΈν„°νŽ˜μ΄μŠ€μ˜ μ‚¬μš© λͺ©μ κ³Ό μ‚¬μš© μ‹œκΈ°μ˜ 차이'λ₯Ό μ•Œμ•„λ³΄κ³ , 'κΈ°λŠ₯적인 차이점'에 λŒ€ν•΄μ„œλ„ μΆ”κ°€μ μœΌλ‘œ 정리해 보도둝 ν•˜μž. πŸ“™ 1. μ‚¬μš© λͺ©μ κ³Ό μ‚¬μš©..

    μΈν„°νŽ˜μ΄μŠ€(Interface)

    JDK1.8λΆ€ν„° λ””ν΄νŠΈ λ©”μ„œλ“œμ™€ static λ©”μ„œλ“œλ„ μΈν„°νŽ˜μ΄μŠ€μ—μ„œ μ‚¬μš©ν•  수 있게 λ˜μ—ˆλ‹€. 일단은 JDK1.8 μ΄μ „μ˜ μΈν„°νŽ˜μ΄μŠ€μ— λŒ€ν•΄μ„œ λ¨Όμ € μ‚΄νŽ΄λ³΄κ³ , 그리고 JDK1.8μ—μ„œ μΆ”κ°€λœ κΈ°λŠ₯(λ””ν΄νŠΈ λ©”μ„œλ“œ, static λ©”μ„œλ“œ)κ³Ό Java9λΆ€ν„° μ‚¬μš©ν•  수 μžˆλŠ” private λ©”μ„œλ“œμ— λŒ€ν•΄μ„œ μ‚΄νŽ΄λ³΄λŠ” κ²ƒμœΌλ‘œ ν•˜μž. πŸ“™ 1. μΈν„°νŽ˜μ΄μŠ€λž€ μΈν„°νŽ˜μ΄μŠ€λž€ μΌμ’…μ˜ μΆ”μƒν΄λž˜μŠ€μ΄λ‹€. μΈν„°νŽ˜μ΄μŠ€λŠ” μΆ”μƒν΄λž˜μŠ€μ²˜λŸΌ μΆ”μƒλ©”μ„œλ“œλ₯Ό κ°–μ§€λ§Œ μΆ”μƒν΄λž˜μŠ€λ³΄λ‹€ 좔상화 정도가 λ†’μ•„μ„œ μΆ”μƒν΄λž˜μŠ€μ™€ 달리 λͺΈν†΅μ„ κ°–μΆ˜ 일반 λ©”μ„œλ“œ λ˜λŠ” λ©€λ²„λ³€μˆ˜λ₯Ό κ΅¬μ„±μ›μœΌλ‘œ κ°€μ§ˆ 수 μ—†λ‹€. 였직 μΆ”μƒλ©”μ„œλ“œμ™€ μƒμˆ˜λ§Œμ„ λ©€λ²„λ‘œλ§Œ κ°€μ§ˆ 수 있으며, κ·Έ μ™Έμ˜ λ‹€λ₯Έ μ–΄λ– ν•œ μš”μ†Œλ„ ν—ˆμš©ν•˜μ§€ μ•ŠλŠ”λ‹€. μΈν„°νŽ˜μ΄μŠ€λ„ μΆ”μƒν΄λž˜μŠ€μ²˜λŸΌ μ™„μ„±λ˜μ§€ μ•Šμ€ λΆˆμ•ˆμ „ν•œ 것이기 λ•Œλ¬Έμ— κ·Έ 자체..

    좔상 클래슀(Abstract Class)

    πŸ“™ 1. μΆ”μƒν΄λž˜μŠ€λž€? public abstract class Player { abstract void play(); abstract void stop(); } 클래슀λ₯Ό 섀계도라고 ν•œλ‹€λ©΄, μΆ”μƒν΄λž˜μŠ€(Abstract Class)λŠ” λ―Έμ™„μ„± 섀계도라고 ν•  수 μžˆλ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” 미완성은 단지 λ―Έμ™„μ„± λ©”μ„œλ“œ(좔상 λ©”μ„œλ“œ)λ₯Ό ν¬ν•¨ν•˜κ³  μžˆλ‹€λŠ” μ˜λ―Έμ΄λ‹€. λ―Έμ™„μ„± μ„€κ³„λ„λ‘œ μ™„μ„±λœ μ œν’ˆμ„ λ§Œλ“€ 수 없듯이 좔상 클래슀둜 μΈμŠ€ν„΄μŠ€λ₯Ό 생성할 수 μ—†λ‹€. 좔상 ν΄λž˜μŠ€λŠ” 상속을 ν†΅ν•΄μ„œ μžμ†ν΄λž˜μŠ€μ— μ˜ν•΄μ„œλ§Œ 완성될 수 μžˆλ‹€. 좔상 클래슀 μžμ²΄λ‘œλŠ” ν΄λž˜μŠ€λ‘œμ„œμ˜ 역할을 λ‹€ λͺ»ν•˜μ§€λ§Œ, μƒˆλ‘œμš΄ 클래슀λ₯Ό μž‘μ„±ν•˜λŠ” 데 μžˆμ–΄μ„œ 바탕이 λ˜λŠ” 쑰상 ν΄λž˜μŠ€λ‘œμ„œ μ€‘μš”ν•œ 의미λ₯Ό κ°–λŠ”λ‹€. 좔상 ν΄λž˜μŠ€λŠ” ν΄λž˜μŠ€μ— 좔상화λ₯Ό μ ‘λͺ©μ‹œμΌœ 보닀 ꡬ쑰적이게 객체λ₯Ό..

    μ œλ„€λ¦­(Generics) - 곡변(Covariant), λΆˆκ³΅λ³€(Invariant), λ°˜κ³΅λ³€(Contravariant)

    1. 곡변, λΆˆκ³΅λ³€, λ°˜κ³΅λ³€μ˜ κ°œλ… πŸŒ‚ λ³€μ„±(Variance)μ΄λž€ νƒ€μž…μ˜ 계측 κ΄€κ³„μ—μ„œ μ„œλ‘œ λ‹€λ₯Έ νƒ€μž… 간에 μ–΄λ– ν•œ 관계가 μžˆλŠ”μ§€λ₯Ό λ‚˜νƒ€λ‚΄λŠ” 것이닀. λ³€μ„±μ˜ 3가지 μ’…λ₯˜μΈ 곡변(Covariant), λΆˆκ³΅λ³€(Invariant), λ°˜κ³΅λ³€(Contravariant)은 λ‹€μŒκ³Ό 같은 νŠΉμ„±μ„ 가진닀. 곡변 Sκ°€ T의 ν•˜μœ„ νƒ€μž…μ΄λ©΄, S[]λŠ” T[]의 ν•˜μœ„ νƒ€μž…μ΄λ‹€. λΆˆκ³΅λ³€ List와 ListλŠ” 관계가 μ—†λ‹€. λ°˜κ³΅λ³€ Sκ°€ T의 ν•˜μœ„ νƒ€μž…μ΄λ©΄, T[]λŠ” S[]의 ν•˜μœ„ νƒ€μž…μ΄λ‹€. 2. μ œλ„€λ¦­μ€ 곡변성이 μ—†λ‹€. β˜” μžλ°”μ—μ„œ 배열은 곡변이고, μ œλ„€λ¦­μ€ λΆˆκ³΅λ³€μ΄λ‹€. 즉, 객체 νƒ€μž…μ˜ κ΄€κ³„μ—μ„œ Aκ°€ B의 ν•˜μœ„ νƒ€μž…μΌ λ•Œ, λ°°μ—΄ A[]λŠ” B[]의 ν•˜μœ„ νƒ€μž…μ΄μ§€λ§Œ Listsms List의 ν•˜μœ„ νƒ€μž…μ΄ μ•„λ‹ˆλ‹€. public stat..

    ν˜•λ³€ν™˜(μΊμŠ€νŒ…, Casting) - μ—…μΊμŠ€νŒ…(Up-Casting), λ‹€μš΄μΊμŠ€νŒ…(Down-Casting)

    1. ν˜•λ³€ν™˜(μΊμŠ€νŒ…) κ°œλ… 🦏 ν˜•λ³€ν™˜(μΊμŠ€νŒ…)μ΄λž€ λ³€μˆ˜ λ˜λŠ” μƒμˆ˜μ˜ νƒ€μž…μ„ λ‹€λ₯Έ νƒ€μž…μœΌλ‘œ λ³€ν™˜ν•˜λŠ” 것을 λ§ν•œλ‹€. κΈ°λ³Έν˜•(Primitive Type)μ—μ„œλŠ” boolean을 μ œμ™Έν•œ λ‚˜λ¨Έμ§€ νƒ€μž…λ“€μ€ μ„œλ‘œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€. μ°Έμ‘°ν˜•(Reference Type)μ—μ„œλŠ” μ„œλ‘œ 상속관계가 μžˆλŠ” 클래슀 μ‚¬μ΄μ—μ„œλ§Œ ν˜•λ³€ν™˜μ΄ κ°€λŠ₯ν•˜λ‹€. μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ, μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ ν˜•λ³€ν™˜μ„ ν•˜λŠ” 것이닀. 이 κΈ€μ—μ„œλŠ” κΈ°λ³Έν˜•μ˜ ν˜•λ³€ν™˜λ³΄λ‹€λŠ” μ°Έμ‘°ν˜•μ˜ ν˜•λ³€ν™˜μ— μ΄ˆμ μ„ λ§žμΆ”λ„λ‘ ν•œλ‹€. μ°Έμ‘°ν˜• μΊμŠ€νŒ…μ€ 2κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. 1. μ—…μΊμŠ€νŒ…(Up-Casting) μžμ†νƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ₯Ό μ‘°μƒνƒ€μž…μ˜ μ°Έμ‘°λ³€μˆ˜λ‘œ λ³€ν™˜ν•˜λŠ” 것 μ—…μΊμŠ€νŒ…μ„ ν•˜λ©΄ 상속받은 μ„œλΈŒ ν΄λž˜μŠ€μ— 상관없이 ν•˜λ‚˜μ˜ μΈμŠ€ν„΄μŠ€λ‘œ λ¬Άμ–΄μ„œ κ΄€..

    μ œλ„€λ¦­(Generics) - κΈ°λ³Έ κ°œλ…

    JDK 1.5λΆ€ν„° λ„μž…λœ μ œλ„€λ¦­(Generics)에 λŒ€ν•΄μ„œ μ•Œμ•„λ³΄μž. 'μ œλ„€λ¦­(Generic)을 μ‚¬μš©ν•˜λ©΄ λ‹€μ–‘ν•œ νƒ€μž…μ„ μ‚¬μš©ν•  수 μžˆλ‹€.' μ •λ„λ‘œλ§Œ μ•Œκ³  μžˆμ—ˆλŠ”λ° μ œλŒ€λ‘œ κ³΅λΆ€ν•˜λ €κ³  λ³΄λ‹ˆκΉ 생각보닀 양이 λ§Žλ‹€. 쫌 많이 λ§Žλ‹€... κ·Έλž˜μ„œ 이번 κΈ€μ—μ„œλŠ” μ œλ„€λ¦­μ˜ 기번 κ°œλ…μ— λŒ€ν•΄μ„œ μ•Œμ•„λ³΄κ³  λ‹€μŒ 글듀을 톡해 더 ꡬ체적으둜 μ•Œμ•„λ³΄λŠ” κ²ƒμœΌλ‘œ ν•˜μž. (μ΄νŽ™ν‹°λΈŒ μžλ°” 5μž₯의 μ œλ„€λ¦­(μ•„μ΄ν…œ 26 ~ μ•„μ΄ν…œ 33) λ‚΄μš©κ³Ό μ™€μΌλ“œμΉ΄λ“œ λ“±μ˜ λ‚΄μš©μ„ μΆ”κ°€μ μœΌλ‘œ λ‹€λ£° μ˜ˆμ •μ΄λ‹€.) (μ΄νŽ™ν‹°λΈŒ μžλ°” 5μž₯ μ œλ„€λ¦­ 파트λ₯Ό μ½μœΌλ €λŠ”λ° 이해가 잘 λ˜μ§€ μ•Šμ•„μ„œ μ œλ„€λ¦­μ˜ κΈ°λ³ΈλΆ€ν„° λΈ”λ‘œκΉ…ν•˜κ³  μžˆλŠ” 쀑이닀...πŸ˜…) 1. μ œλ„€λ¦­(Generic) κ°œλ… 🧱 μš°λ¦¬λŠ” μ œλ„€λ¦­(Generics)을 κ·Έ μ–΄λ– ν•œ κ°œλ…λ³΄λ‹€ 자주 μ‚¬μš©ν•œλ‹€. public stati..

    래퍼 클래슀 (Wrapper Class)

    1. κ°œλ… 🚢‍♀️ 일반적으둜 객체지ν–₯ κ°œλ…μ—μ„œ λͺ¨λ“  것은 객체둜 닀루어져야 ν•œλ‹€. ν•˜μ§€λ§Œ μžλ°”μ—μ„œ 8개의 κΈ°λ³Έν˜•(boolean, char, byte, short, int, long, float, double)은 객체둜 닀루어지지 μ•ŠλŠ”λ‹€. μžλ°”κ°€ μ™„μ „ν•œ 객체 지ν–₯ μ–Έμ–΄κ°€ μ•„λ‹ˆλΌλŠ” 이야기λ₯Ό λ“£μ§€λ§Œ, 보닀 높은 μ„±λŠ₯을 얻을 수 μžˆλ‹€λŠ” μž₯점이 μžˆλ‹€. ν”„λ‘œκ·Έλž˜λ°μ„ ν•˜λ‹€ 보면 κΈ°λ³Έν˜•(Primitive Type) λ³€μˆ˜λ„ μ–΄μ©” 수 없이 객체둜 닀뀄야 ν•˜λŠ” κ²½μš°κ°€ μžˆλ‹€. 예λ₯Ό λ“€λ©΄, λ§€κ°œλ³€μˆ˜λ‘œ 객체λ₯Ό μš”κ΅¬ν•  λ•Œ, κΈ°λ³Έν˜• 값이 μ•„λ‹Œ 객체둜 μ €μž₯ν•΄μ•Ό ν•  λ•Œ, 객체 κ°„μ˜ 비ꡐ가 ν•„μš”ν•  λ•Œ λ“±λ“±μ˜ κ²½μš°μ—λŠ” κΈ°λ³Έν˜• 값듀을 객체둜 λ³€ν™˜ν•˜μ—¬ μž‘μ—…μ„ μˆ˜ν–‰ν•΄μ•Ό ν•œλ‹€. 이럴 λ•Œ 래퍼 클래슀λ₯Ό μ‚¬μš©ν•˜μ—¬ 각각의 νƒ€μž…μ— ν•΄λ‹Ήν•˜λŠ” 데이터λ₯Ό 인..

    clone()

    1. κ°œλ… πŸ‘·‍♂️ clone() λ©”μ„œλ“œλŠ” μžμ‹ μ„ λ³΅μ œν•˜μ—¬ μƒˆλ‘œμš΄ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν•˜λŠ” 일을 ν•œλ‹€. 2. μ‚¬μš©λ°©λ²• πŸ‘©‍βš•οΈ clone()은 Object ν΄λž˜μŠ€μ— λ‹€μŒκ³Ό 같이 μ •μ˜λ˜μ–΄ μžˆλ‹€. public class Object { protected native Object clone() throws CloneNotSupportedException; } 이λ₯Ό μ‚¬μš©ν•˜κΈ° μœ„ν•΄μ„œλŠ” λ‹€μŒ 2가지λ₯Ό μˆ˜ν–‰ν•˜μ—¬μ•Ό ν•œλ‹€. Cloneable μΈν„°νŽ˜μ΄μŠ€λ₯Ό κ΅¬ν˜„ν•œλ‹€. clone()을 μ˜€λ²„λΌμ΄λ”©ν•˜λ©΄μ„œ μ ‘κ·Ό μ œμ–΄μžλ₯Ό protectedμ—μ„œ public으둜 λ³€κ²½ν•œλ‹€. public class User implements Cloneable { String name; int age; public User(String name, int age..

    얕은 볡사(Shallow Copy) vs κΉŠμ€ 볡사(Deep Copy)

    얕은 볡사(Shallow Copy)λž€ μ£Όμ†Œκ°’μ„ λ³΅μ‚¬ν•˜λŠ” 것을 λ§ν•œλ‹€. (μŠ€νƒ μ˜μ—­) κΉŠμ€ 볡사(Deep Copy)λž€ μ‹€μ œ 값을 λ©”λͺ¨λ¦¬ 곡간에 λ³΅μ‚¬ν•˜λŠ” 것을 λ§ν•œλ‹€. (νž™ μ˜μ—­) 1. 얕은 볡사(Shallow Copy) 🐝 얕은 볡사(Shallow Copy)λŠ” μ£Όμ†Œκ°’μ„ λ³΅μ‚¬ν•˜λŠ” 것이닀. 참쑰값을 λ³΅μ‚¬ν–ˆκΈ° λ•Œλ¬Έμ— μœ„μ˜ 그림처럼 같은 μΈμŠ€ν„΄μŠ€λ₯Ό 가리킀고 μžˆλ‹€. κ·Έλž˜μ„œ 기쑴의 값을 λ°”κΎΈλ©΄ λ³΅μ‚¬λœ 값도 λ°”λ€Œκ²Œ λ˜λŠ” 상황이 λ°œμƒν•œλ‹€. public class User { String name; int age; public User(String name, int age) { super(); this.name = name; this.age = age; } } ---------- public class ShallowCop..

    JVM λ©”λͺ¨λ¦¬ ꡬ쑰

    1. JVM κ°œλ… πŸ‘¨‍πŸ”§ JVM(Java Virtual Machine)μ΄λž€ 'μžλ°”λ₯Ό μ‹€ν–‰ν•˜κΈ° μœ„ν•œ κ°€μƒμ˜ 컴퓨터'라고 ν•  수 μžˆλ‹€. μ—¬κΈ°μ„œ λ§ν•˜λŠ” κ°€μƒμ˜ μ»΄ν“¨ν„°λž€ μ‹€μ œ 컴퓨터(ν•˜λ“œμ›¨μ–΄)κ°€ μ•„λ‹Œ μ†Œν”„νŠΈμ›¨μ–΄λ‘œ κ΅¬ν˜„λœ 컴퓨터 μ†μ˜ 컴퓨터이닀. μžλ°”λ‘œ μž‘μ„±λœ μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ€ λͺ¨λ‘ JVMμ—μ„œλ§Œ μ‹€ν–‰λ˜κΈ° λ•Œλ¬Έμ— μžλ°” μ• ν”Œλ¦¬μΌ€μ΄μ…˜μ„ μ‹€ν–‰ν•˜κΈ° μœ„ν•΄μ„œλŠ” JVM이 λ°˜λ“œμ‹œ ν•„μš”ν•˜λ‹€. JVM은 OS에 쒅속적이기 λ•Œλ¬Έμ— ν•΄λ‹Ή OSμ—μ„œ μ‹€ν–‰ κ°€λŠ₯ν•œ JVM이 ν•„μš”ν•˜λ‹€. μ΄λŸ¬ν•œ νŠΉμ„±μœΌλ‘œ 인해 μžλ°”μ˜ μž₯점 쀑 ν•˜λ‚˜λ‘œ 'Write Once, Run AnyWhere.(ν•œ 번 μž‘μ„±ν•˜λ©΄ μ–΄λ””μ„œλ“  μ‹€ν–‰λœλ‹€.)'λΌλŠ” 것이 μžˆλ‹€. 2. 3가지 μ£Όμš” μ˜μ—­ πŸ‘©‍πŸ”¬ JVM은 λ©”λͺ¨λ¦¬λ₯Ό μš©λ„μ— 따라 μ—¬λŸ¬ μ˜μ—­μœΌλ‘œ λ‚˜λˆ„μ–΄ κ΄€λ¦¬ν•œλ‹€. κ·Έ 쀑 3가지 μ£Όμš” μ˜μ—­μΈ..

    λ³€μˆ˜

    1. λ³€μˆ˜ πŸƒ‍♂️ μžλ°”μ—μ„œ μžλ£Œν˜•μ€ 크게 'κΈ°λ³Έν˜•'κ³Ό 'μ°Έμ‘°ν˜•' 두 κ°€μ§€λ‘œ λ‚˜λˆŒ 수 μžˆλ‹€. κΈ°λ³Έν˜• λ³€μˆ˜λŠ” μ‹€μ œ κ°’(data)을 μ €μž₯ν•˜κ³ , μ°Έμ‘°ν˜• λ³€μˆ˜λŠ” μ–΄λ–€ 값이 μ €μž₯λ˜μ–΄ μžˆλŠ” μ£Όμ†Œ(memory address)λ₯Ό κ°’μœΌλ‘œ κ°–λŠ”λ‹€. κΈ°λ³Έν˜•μ—λŠ” 8κ°€μ§€μ˜ νƒ€μž…μ΄ 있고, 8개의 κΈ°λ³Έν˜•μ„ μ œμ™Έν•œ λ‚˜λ¨Έμ§€λŠ” λͺ¨λ‘ μ°Έμ‘°ν˜•μ΄λ‹€. 2. κΈ°λ³Έν˜• 🏌️‍♂️ 1. ꡬ뢄 κΈ°λ³Έν˜•μ€ 크게 'λ…Όλ¦¬ν˜•, λ¬Έμžν˜•, μ •μˆ˜ν˜•, μ‹€μˆ˜ν˜•'으둜 κ΅¬λΆ„ν•œλ‹€. λ…Όλ¦¬ν˜• boolean λ¬Έμžν˜• char μ •μˆ˜ν˜• byte short int long μ‹€μˆ˜ν˜• float double 2. 크기 κΈ°λ³Έν˜•μ˜ ν¬κΈ°λŠ” λ‹€μŒκ³Ό κ°™λ‹€. 1 byte 2 byte 4 byte 8 byte λ…Όλ¦¬ν˜• boolean λ¬Έμžν˜• char μ •μˆ˜ν˜• byte short int long μ‹€μˆ˜ν˜• floa..