BackEnd๐ฑ/Java27 [Java] ArrayList vs LinkedList ์๋ก List๋ ๋ชจ๋ ์ธ์ด์์ ๊ฐ์ฅ ์ ์ฉํ ์๋ฃ๊ตฌ์กฐ ์ค ํ๋์ ๋๋ค. Java์์๋ List๋ฅผ ์ธํฐํ์ด์ค๋ก ์ ๊ณตํ๋ฉฐ, LinkedList์ ArrayList๋ฅผ ๊ตฌํํ์ฌ ์ฌ์ฉํ ์ ์์ต๋๋ค. ArrayList์ LinkedList์ ๊ณตํต๋ ๋ถ๋ถ์ ๋ฝ์์ Colletion ์ธํฐํ์ด์ค๋ฅผ ์ถ๊ฐ๋ก ์ ์ํ์๋๋ฐ, ์ธํฐํ์ด์ค๋ง ๊ฐ์ ๋ฟ ๋ด๋ถ์ ์ผ๋ก ๋์ํ๋ ๋ฐฉ์์ ๋ค๋ฆ ๋๋ค. ์ด๋ฒ ๊ฒ์๊ธ์์๋ ArrayList์ LinkedList์ ์ฐจ์ด๋ฅผ ์์๋ณด๊ณ ์ด๋ ํ ์ํฉ์์ ์ฌ์ฉํด์ผ ํ ์ง ์์๋ณด๊ฒ ์ต๋๋ค. ArrayList ArrayList๋ List ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ดํฐ์ ์ ์ฅ์์๊ฐ ์ ์ง๋๊ณ ์ค๋ณต์ ํ์ฉํ๋ค๋ ํน์ง์ ๊ฐ๊ณ ์์ต๋๋ค. ArrayList๋ ๊ธฐ์กด์ Java Vector๋ฅผ ๊ฐ์ ํ ๊ฒ์ผ๋ก Vector์ ๊ตฌํ .. 2022. 4. 6. [Java] String ํด๋์ค ์๋ก c์ธ์ด ๊ฐ์ ๊ฒฝ์ฐ ๋ฌธ์์ด์ charํ์ ๋ฐฐ์ด๋ก ๋ค๋ฃจ์์ง๋ง ์๋ฐ์์๋ ๋ฌธ์์ด์ ์ํ ํด๋์ค๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ๊ฒ์ด ๋ฐ๋ก String ํด๋์ค์ธ๋ฐ, String ํด๋์ค๋ ๋ฌธ์์ด์ ์ ์ฅํ๊ณ ์ด๋ฅผ ๋ค๋ฃจ๋๋ฐ ํ์ํ ์๋ง์ ๋ฉ์๋๋ค์ ํจ๊ป ์ ๊ณตํฉ๋๋ค. ์ด๋ฒ ๊ฒ์๊ธ์์๋ ์ด๋ฌํ String ํด๋์ค์ ๊ตฌ์ฑ๊ณผ ๋ฉ์๋๋ค์ ๋ํด ํ๋ฒ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. ๋ชฉ์ฐจ 1. ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ(immutable) ํด๋์ค 2. ๋ฌธ์์ด์ ๋น๊ต(๋ฆฌํฐ๋ด vs ์ธ์คํด์ค, == vs equals) 3. ๋ฌธ์์ด ๋ฆฌํฐ๋ด 4. String ํด๋์ค์ ์์ฑ์์ ๋ฉ์๋ 1) ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅํ(immutable) ํด๋์ค ํ๋ฒ ์์ฑ๋ String ์ธ์คํด์ค๊ฐ ๊ฐ๊ณ ์๋ ๋ฌธ์์ด์ ์ฝ์ด ์ฌ ์๋ง ์๊ณ , ๋ณ๊ฒฝํ ์๋ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ์ฝ๋์ ๊ฐ์ด '+'์ฐ์ฐ์๋ฅผ .. 2022. 4. 5. [Java] ์ธํฐํ์ด์ค(interface) ์ด ์ ๋ฆฌ ์๋ก Spring ๊ณต๋ถํ๋ ์ค interface๋ถ๋ถ์ ๋ํด ์ดํด๊ฐ ๋ถ์กฑํ ๊ฒ ๊ฐ์ ์์ธํ๊ฒ ํ๋ฒ ์ ๋ฆฌํด ๋ณด๋ ค๊ณ ํฉ๋๋ค. ๋ชฉ์ฐจ 1. ์ธํฐํ์ด์ค๋? 2. ์ธํฐํ์ด์ค์ ์์ฑ ๋ฐฉ๋ฒ 3. ์ธํฐํ์ด์ค์ ์์ 4. ์ธํฐํ์ด์ค์ ๊ตฌํ 5. ์ธํฐํ์ด์ค๋ฅผ ์ด์ฉํ ๋คํ์ฑ 6. ์ธํฐํ์ด์ค์ ์ฅ์ 1. ์ธํฐํ์ด์ค๋? ์ธํฐํ์ด์ค๋ ์ผ์ข ์ ์ถ์ ํด๋์ค์ ๋๋ค. ์ธํฐํ์ด์ค๋ ์ถ์ ํด๋์ค์ฒ๋ผ ์ถ์ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋ง ์ถ์ ํด๋์ค๋ณด๋ค ์ถ์ํ ์ ๋๊ฐ ๋์์ ์ถ์ ํด๋์ค์ ๋ฌ๋ฆฌ ๋ชธํต์ ๊ฐ์ถ ์ผ๋ฐ ๋ฉ์๋ ๋๋ ๋ฉค๋ฒ ๋ณ์๋ฅผ ๊ตฌ์ฑ์์ผ๋ก ๊ฐ์ง ์ ์์ต๋๋ค. ์ค์ง "์ถ์ ๋ฉ์๋"์ "์์"๋ง์ ๋ฉค๋ฒ๋ก ๊ฐ์ง ์ ์์ต๋๋ค. ์ถ์ ํด๋์ค๋ฅผ ๋ถ๋ถ์ ์ผ๋ก๋ง ์์ฑ๋ '๋ฏธ์์ฑ ์ค๊ณ๋'๋ผ๊ณ ํ๋ค๋ฉด, ์ธํฐํ์ด์ค๋ ๊ตฌํ๋ ๊ฒ์ ์๋ฌด๊ฒ๋ ์๊ณ ๋ฐ๊ทธ๋ฆผ๋ง ๊ทธ๋ ค์ ธ ์๋ '๊ธฐ๋ณธ ์ค.. 2022. 3. 30. [Java] super์ super()์ ๊ฐ๋ ๋ชฉ์ฐจ 1. super์ ๊ฐ๋ 2. super()์ ๊ฐ๋ - (์กฐ์ ํด๋์ค ์์ฑ์) 1. super์ ๊ฐ๋ super๋ ์์ ํด๋์ค์์ ์กฐ์ ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ ๋ฉค๋ฒ๋ฅผ ์ฐธ์กฐํ๋ ๋ฐ ์ฌ์ฉ๋๋ ์ฐธ์กฐ ๋ณ์์ ๋๋ค. ๋ฉค๋ฒ ๋ณ์์ ์ง์ญ๋ณ์์ ์ด๋ฆ์ด ๊ฐ์ ๋ this๋ฅผ ๋ถ์ฌ์ ๊ตฌ๋ณํ๋ฏ์ด ์์๋ฐ์ ๋ฉค๋ฒ์ ์์ ์ ๋ฉค๋ฒ์ ์ด๋ฆ์ด ๊ฐ์ ๋๋ super๋ฅผ ๋ถ์ฌ์ ๊ตฌ๋ณํ ์ ์์ต๋๋ค. ์กฐ์ ํด๋์ค๋ก๋ถํฐ ์์๋ฐ์ ๋ฉค๋ฒ๋ ์์ ํด๋์ค ์์ ์ ๋ฉค๋ฒ์ด๋ฏ๋ก super๋์ this๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค. (๊ทธ๋๋ ์กฐ์ ํด๋์ค์ ๋ฉค๋ฒ์ ์์ ํด๋์ค์ ๋ฉค๋ฒ๊ฐ ์ค๋ณต ์ ์๋์ด ์๋ก ๊ตฌ๋ณํด์ผ ํ๋ ๊ฒฝ์ฐ์๋ง super๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ต๋๋ค.) ์กฐ์์ ๋ฉค๋ฒ์ ์์ ์ ๋ฉค๋ฒ๋ฅผ ๊ตฌ๋ณํ๋ ๋ฐ ์ฌ์ฉ๋๋ค๋ ์ ์ ์ ์ธํ๊ณ ๋ super์ this๋ ๊ทผ๋ณต์ ์ผ๋ก .. 2022. 3. 24. [Java] static ๊ณผ instance์ ์ฐจ์ด ์๋ก static๊ณผ instance์ ์ฐจ์ด์ ๋ํด์ ํ๋ฒ ์ ๋ฆฌํ์ฌ ์ง๊ณ ๋์ด ๊ฐ๋ ค๊ณ ํฉ๋๋ค. ๋ชฉ์ฐจ 1. ํด๋์ค(static) ๋ณ์์ ์ธ์คํด์ค ๋ณ์์ ์ฐจ์ด 2. ํด๋์ค(static) ๋ฉ์๋์ ์ธ์คํด์ค ๋ฉ์๋ ์ฐจ์ด 3. ํด๋์ค(static) ๋ฉค๋ฒ์ ์ธ์คํด์ค ๋ฉค๋ฒ ๊ฐ์ ์ฐธ์กฐ์ ํธ์ถ 1. ํด๋์ค(static) ๋ณ์์ ์ธ์คํด์ค ๋ณ์์ ์ฐจ์ด ๋ฉค๋ฒ ๋ณ์ ์ค static์ด ๋ถ์ ๊ฒ์ ํด๋์ค ๋ณ์, ๋ถ์ง ์์ ๊ฒ์ ์ธ์คํด์ค ๋ณ์์ ๋๋ค. ์๋ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ์ ๋ฆฌํด๋ณด๊ฒ ์ต๋๋ค. public class Test { int instanceValue; // ์ธ์คํด์ค ๋ณ์ static int classValue; // ํด๋์ค ๋ณ์ void method() { int stackValue = 0; // ์ง์ญ ๋ณ์ } } ์ ์ฝ๋์๋ 3๊ฐ.. 2022. 3. 21. [Java] JVM์ ๋ฉ๋ชจ๋ฆฌ ๊ตฌ์ฑ์์์ ์์ญ์ ๊ดํ ๊ณ ์ฐฐ ์๋ก ์์ฉ ํ๋ก๊ทธ๋จ์ด ์คํ๋๋ฉด, JVM์ ์์คํ ์ผ๋ก๋ถํฐ ํ๋ก๊ทธ๋จ์ ์ํํ๋๋ฐ ํ์ํ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋น๋ฐ๊ณ JVM์ ์ด ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฉ๋์ ๋ฐ๋ผ ์ฌ๋ฌ ์์ญ์ผ๋ก ๋๋์ด ๊ด๋ฆฌํฉ๋๋ค. ๊ทธ๋ ์ง๋ง ์ฌ๊ธฐ์ ์ฌ๋ฌ ๊ฐ์ง ์๋ฌธ์ด ์๊ฒผ์ต๋๋ค. ์๋ฌธ์ ์๋์ ๊ฐ์ต๋๋ค. ์ฐ๋ฆฌ๊ฐ ํํ ์๋ ํ๋ก์ธ์ค์ ๋ฉ๋ชจ๋ฆฌ ์์ญ์ Heap, Stack, Data, Text ์์ญ์ผ๋ก ๋๋์ด์ ธ์๋ค. JVM๋ ํ๋์ Process์ด๊ธฐ์ ์์ ์์ญ์ ๋ฐ๋ฅผ ๊ฒ์ด๋ค. ๊ทธ๋ฌ๋ JVM์ ๋ ๋ด๋ถ์ Runtime Data Area๋ฅผ ๋์ด 6๊ฐ์ง ์์ญ์ผ๋ก ๋๋๋ค. ๊ทธ๋ ๋ค๋ฉด ํ๋ก์ธ์ค ๋ฉ๋ชจ๋ฆฌ์ ์ด๋ ์์ญ์์ JVM์ 6๊ฐ์ง ์์ญ๋ค์ด ๋ง๋ค์ด์ง๋ ๊ฒ์ผ๊น? ์ ํํ ์๊ธฐ ์ํด์ ๋ง์ ์์นญ์ ํ์์ง๋ง ๋๋ถ๋ถ JVM์ 6๊ฐ์ง ์์ญ์๋ง ์ค๋ช ํ์๊ณ ์ ๊ณ ๋ฏผ์ ํด๊ฒฐํด์ค ๋ ํผ๋ฐ์ค๋ฅผ ์ฐพ๊ธฐ๋ .. 2022. 3. 18. [Java] ์ด๋ฆ ๋ถ์ ๋ฐ๋ณต๋ฌธ(Labeled-Loop) Labeled-Loop Java์์๋ ๋ฐ๋ณต๋ฌธ์ ์ด๋ฆ์ ์ง์ ํด์ฃผ์ด ์ฌ์ฉํ ์ ์์ต๋๋ค. ์๋์ ์์ ์ฝ๋๋ฅผ ๋ณด๋ฉฐ ๊ฐ๋จํ๊ฒ ์ ๋ฆฌํด ๋ณด๊ฒ ์ต๋๋ค. public static void main(String[] args) { Loop1: for (int i = 1; i 2022. 3. 13. [Java] ์ผํธ-์ํท (Short-Circuit) ์ผํธ-์ํท (Short-Circuit) ์ผํธ์ํท์ด๋ ๋ ผ๋ฆฌ ์ฐ์ฐ์์ ๋ ํผ์ฐ์ฐ์ ์ค ์ด๋ ํ์ชฝ๋ง '์ฐธ'์ด๋ฉด์ ์ฐ์ธก ํผ์ฐ์ฐ์์ ๊ฐ์ ํ๊ฐํ์ง ์๊ณ ๋ฐ๋ก ๊ฒฐ๊ณผ๋ฅผ ์ป๋ ํ์๋ฅผ ๋งํฉ๋๋ค. ๊ทธ๋์ ๊ฐ์ ์กฐ๊ฑด์์ด๋ผ๋ ํผ์ฐ์ฐ์์ ์์น์ ๋ฐ๋ผ์ ์ฐ์ฐ์๋๊ฐ ๋ฌ๋ผ์ง ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ์๋์ ๊ฐ์ ์ฝ๋๊ฐ ์์ต๋๋ค. ๊ณผ์ฐ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ ์ด๋ป๊ฒ ๋์ฌ๊น์? // JAVA public class Test { public static void main(String[] args) { int a = 0, b = 0; if (a == 0 || ++b == 1) { } System.out.print(a + " " + b); } } ์ ์ฝ๋์ ์ถ๋ ฅ ๊ฒฐ๊ณผ๋ 0 0 ์ด ๋์ต๋๋ค. ์คํ ๊ฒฐ๊ณผ์์ ์ ์ ์๋ฏ์ด, ๋ ๋ฒ์ ๋ ผ๋ฆฌ ์ฐ์ฐ ํ์๋ b์.. 2022. 3. 8. [Java] JIT ์ปดํ์ผ๋ฌ(Just-In-Time) JIT ์ปดํ์ผ๋ฌ๋ ๋ฌด์์ธ๊ฐ? JIT๋ Just-In-Time์ ์ฝ์ด๋ก '์ฆ์'๋ผ๋ ๋ป์ ๋๋ค. JIT ์ปดํ์ผ๋ฌ๋ฅผ ์ดํดํ๊ธฐ ์ํด์๋ ๋จผ์ ์๋ฐ์์ ์ปดํ์ผ๊ณผ ๋ฐํ์์ด ์ด๋ค ์์ผ๋ก ์ฒ๋ฆฌ๊ฐ ๋๋์ง๋ฅผ ๋จผ์ ์ดํดํด์ผ ํฉ๋๋ค. ์ฐ๋ฆฌ๊ฐ ์๋ฐ ์ฝ๋๋ฅผ ์ ๋ ฅํ๊ณ ์คํ ๋ฒํผ์ ๋๋ฅด๋ฉด ๋ค์๊ณผ ๊ฐ์ ๊ณผ์ ์ ๊ฑฐ์ณ์ ์ฒ๋ฆฌ๊ฐ ๋ฉ๋๋ค. Java ์ฝ๋๋ JavaCompiler๋ฅผ ํตํด ByteCode๋ก ๋ณํ๋๋ค. ์ธํฐํ๋ฆฌํฐ๋ฅผ ํตํด ํ ์ค ํ ์ค ํด๋น OS์์ ์ดํดํ ์ ์๋ ๊ธฐ๊ณ์ด(native code)๋ก ๋ฒ์ญ๋๋ค. ์ด๋ ๊ฒ Java๋ ์ปดํ์ผ๊ณผ ์ธํฐํ๋ฆฌํฐ์ ๋ ๊ฐ์ง ๋ฐฉ์์ ๋ณํํด์ ์ฌ์ฉํ๋ ์ธํฐํ๋ฆฌํฐ(Interpreter) ๋ฐฉ์๊ณผ ์ปดํ์ผ(Compile) ๋ฐฉ์์ด ํผํฉ๋ ์ธ์ด์ ๋๋ค. ํ์ง๋ง ์ด๋ฌํ ๋ฐฉ์์๋ ๋ฌธ์ ๊ฐ ์์์ต๋๋ค. ๋งค๋ฒ ์ปดํ์ผ์ ํตํด .. 2022. 3. 8. ์ด์ 1 2 3 ๋ค์