Array
Array
- ๋ฐฐ์ด์ ์ฐธ์กฐ๋ณ์๋ ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ Reference Type์ด๋ค.
- type[] ๋ณ์๋ช
; or type ๋ณ์๋ช
[];
- []์ ์์น๋ ์๊ด์์ผ๋ ๊ฐ๊ธ์ type ๋ฐ๋ก ๋ค์ ๋ถ์ฌ์ ๋ฐฐ์ดํ์์ ์๊ธฐ ์ฝ๊ฒ ํ์ํ๋ค.
๋ฐฐ์ด๊ณผ Data Type
int a a์ Type : int
int[] arr arr์ Type : int ๋ฐฐ์ด
arr์ด ์ ์ฅํ๋ ๋ฐ์ดํฐ์ Type : int
๋ฐฐ์ด์ ์์ฑ ๋ฐ ์ด๊ธฐํ
- new ํค์๋์ ํจ๊ป ๋ฐฐ์ด์ Data type, ํฌ๊ธฐ๋ฅผ ์ง์ ํ๋ค. (New data_type[length])
- int[] arr = new int[4]; (intํ Data๋ฅผ 4๊ฐ ๋ด์ ์ ์๋ arr ๋ฐฐ์ด ์ ์ธ)
- int[] arr = {1,2,3,4}; (intํ ๋ฐฐ์ด ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ)
Arrays Class & Array ๊ด๋ จ ์ฃผ์ ํจ์
java.util.Arrays
- ๋ฐฐ์ด๊ณผ ๊ด๋ จ๋ utility๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
Arrays.toString()
- ๋ฐฐ์ด์ ๊ฐ์ ํธํ๊ฒ ์ถ๋ ฅํด์ค๋ค.
- ๋ฐฐ์ด์ ๊ทธ๋ฅ ์ถ๋ ฅํ๋ ค๊ณ ํ๋ฉด(ex. print(arr)) ๋ฐฐ์ด ์์ ๊ฐ์ด ์๋ Reference ์ฐธ์กฐ๊ฐ์ด ์ถ๋ ฅ๋๋ค. ํ์ง๋ง toString์ ์ฌ์ฉํ๋ฉด ๋ฐฐ์ด ๋ด๋ถ์ ๊ฐ์ ์ถ๋ ฅํ ์ ์๋ค. (debug์ฉ๋ ๅค)
Arrays.deepToString()
- 2์ฐจ์ ๋ฐฐ์ด ์ด์์ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๋ฐ๋ผ๊ฐ์ ๋ด๋ถ ๊ฐ์ ์ถ๋ ฅํด์ฃผ๋ ํจ์
System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length)
- ๋ฐฐ์ด์ ๋ณต์ฌํ๋๋ฐ ์ฌ์ฉ๋๋ค. (๋ฐฐ์ด์ ๋ณต์ฌํ์ฌ ๋ ํฐ ์ฌ์ด์ฆ์ ๋ฐฐ์ด์ ์ฌ์ฉํ ๋)
- src : ๋ณต์ฌํ๊ณ ์ ํ๋ ์๋ณธ ๋ฐฐ์ด
- srcPos : ๋ณต์ฌ๋ฅผ ์์ํ๊ณ ์ ํ๋ ์์น (์ฒ์๋ถํฐ ๋ณต์ฌํ๋ ค๋ฉด 0)
- dest : ๋ณต์ฌํ๋ ค๋ ๋์
- desPos : ์ด๋๋ถํฐ ์ธ ๊ฒ์ธ์ง ์์น
- length : ๋ณต์ฌํ ๊ธธ์ด
๋ค์ฐจ์ ๋ฐฐ์ด
Array of Array
๋ฐฐ์ด์ ์์๊ฐ ๋๋ค๋ฅธ ๋ฐฐ์ด์ด๋ค. (๋ฐฐ์ด ์ฌ๋ฌ๊ฐ๋ฅผ ๋ชจ์ ๋ค์ ๋ฐฐ์ด๋ก ๊ด๋ฆฌ)
int[][] arr;
โ int[]์ ์์๋ก ๊ฐ์ง๋ 1์ฐจ์ ๋ฐฐ์ด int์ 2์ฐจ์ ๋ฐฐ์ด
๋ฐฐ์ด์ ๊ฐ์ฒด ์ (์ค๋ฅธ์ชฝ ๊ทธ๋ฆผ)
- Java์์ ๋ฐฐ์ด์ Reference Type์ ๊ฐ์ฒด์ด๋ค.
- ๋ฐ๋ผ์ ๋ค์ฐจ์๋ฐฐ์ด์์ ๊ฐ์ฒด์ ์๋ฅผ ํ์
ํ๋ ๊ฒฝ์ฐ data์ ์๊ฐ ์๋ ์์ฑ๋๋ ๊ฐ์ฒด์ ์๋ฅผ ํตํด ํ์
ํด์ผ ํ๋ค.
ex) int[][] teams = new int[2][3][4];
1. int[][]๋ฅผ ๋ด์ ์ ์๋ 2 size์ ๊ฐ์ฒด๊ฐ 1๊ฐ ์กด์ฌ
2. int[]๋ฅผ ๋ด์ ์ ์๋ 3 size์ ๊ฐ์ฒด๊ฐ 2๊ฐ ์กด์ฌ
3. int๋ฅผ ๋ด์ ์ ์๋ 4 size์ ๊ฐ์ฒด๊ฐ 6๊ฐ ์กด์ฌ
๋ค์ฐจ์ ๋ฐฐ์ด ์ ์ธ์์ ์ฃผ์์ !
๋ค์ฐจ์ ๋ฐฐ์ด์ ์ ์ธ ์ ๋ค์ชฝ์ Size๋ ์ง์ ํ ํ์๊ฐ ์๋ค!
๋ค์ฐจ์ ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ชจ๋ ์ ์ธํ ๋ค์ ํ์ ์ฐจ์์ ๋ฐฐ์ด์ ํตํด ์ด๊ธฐํํ๋ ๊ฒฝ์ฐ ๋ฐฐ์ด์ ๊ฐ์ด ๊ฐฑ์ ๋๋ ๊ฒ์ด ์๋๋ผ ๊ธฐ์กด์ ์ฐธ์กฐ๊ฐ์ ๋ฐ๊พธ๊ฒ ๋๋ค.
โ ์ฆ, ์ด๊ธฐ ์ ์ธ์์ ๋ง๋ค์ด๋ ๊ฐ์ฒด๋ ์ธ๋ชจ์๋ ๊ฐ๋น์ง๊ฐ ๋์ด๋ฒ๋ฆฐ๋ค.
์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ
int[ ][ ] years = new int[4][ ];
1์ฐจ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ํตํ ๋ค์ฐจ์ ๋ฐฐ์ด
Order Class
- ๋ฉค๋ฒ : ์ฃผ๋ฌธ๋ฒํธ, ๋ ์ง, ์ฃผ๋ฌธ์, ๊ตฌ๋งค ์ํ ๋ฆฌ์คํธ
- ์ฃผ๋ฌธ์์ ๊ตฌ๋งค ์ํ ๋ฆฌ์คํธ๋ ๋ค๋ฅธ Class์ ๋ฐ์ดํฐ๋ฅผ ์ฐธ์กฐํ์ฌ ๊ตฌ์ฑํ ์ ์๋ค.
ex)
10๊ฐ์ ์ฃผ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋๋ ๊ฒฝ์ฐ ์์ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ๋ณต์กํ ๊ตฌ์กฐ์ ๋ค์ฐจ์ ๋ฐฐ์ด์ด ๋์ค๊ฒ ๋๋ค. ํ์ง๋ง ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํ์ฌ ๋ฐฐ์ด์ ๋ง๋๋ ๊ฒฝ์ฐ ๋ณต์กํ ๋ค์ฐจ์ ๋ฐฐ์ด์ 1์ฐจ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ํตํด ๊ตฌํํ ์ ์๋ค.
โ 1์ฐจ์ ๊ฐ์ฒด ๋ฐฐ์ด์ ํตํ ๋ค์ฐจ์ ๋ฐฐ์ด์ ํจ๊ณผ!
Class์ ๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ
ํ์ค ๊ฐ์ฒด, ํด๋์ค, ํ๋ก๊ทธ๋จ ๊ฐ์ฒด์ ๊ด๊ณ
- ํ์ค ๊ฐ์ฒด์ ์์ฑ๊ณผ ๊ธฐ๋ฅ์ ์ถ์ํ(abstraction) ๋์ด ํด๋์ค์ ์ ์๋๋ค.
- ํด๋์ค๋ ๊ตฌ์ฒดํ๋์ด ํ๋ก๊ทธ๋จ ๊ฐ์ฒด (Instance, object)๊ฐ ๋๋ค.
- ๊ฐ์ ํด๋์ค์์ ์์ฑ๋ ๊ฐ์ฒด๋ ๋ชจ๋ ๋ค๋ฅธ ๊ฐ์ฒด์ด๋ค.
ใด ๊ฐ์ ์์ฑ๊ณผ method๋ฅผ ์ง๋์ง๋ง, ๊ฐ์์ ๊ณ ์ ํ ์ํ๊ฐ์ ๊ฐ์ง๊ธฐ ๋๋ฌธ!
๊ฐ์ฒด์งํฅ ํ๋ก๊ทธ๋๋ฐ์ ์ฅ์
- ๋ธ๋ก ํํ์ ๋ชจ๋ํ๋ ํ๋ก๊ทธ๋๋ฐ
ใด ์ ๋ขฐ์ฑ ๋์ ํ๋ก๊ทธ๋๋ฐ์ด ๊ฐ๋ฅํ๋ค. (์ด๋ฏธ ๊ฒ์ฆ๋จ)
ใด ์ถ๊ฐ / ์์ / ์ญ์ ๊ฐ ์ฉ์ดํ๋ค.
ใด ์ฌ์ฌ์ฉ์ฑ์ด ๋๋ค.
ใด ์ ์ง๋ณด์์ ๊ฐ์ ์ด ์๋ค.
String ๊ฐ์ฒด์ ๋ฌธ์์ด ์์ Pool
String์ ์์ฑ ๋ฐฉ๋ฒ 2๊ฐ์ง (๋ชฉ์ ์ ๋ฐ๋ผ ์ฌ์ฉ)
1. Literal ํ๊ธฐ์ ์ํ String ์์ฑ (๋จ์ String ์์ฑ)
2. new ํค์๋๋ฅผ ํตํ String ์์ฑ (์ธ์ฝ๋ฉ๋ฐฉ๋ฒ ๋ณ๊ฒฝ, char[]์ ํตํ String ์์ฑ ๋ฑ)
Literal ํ๊ธฐ์ ์ํ String ์์ฑ
- String s = "hello";
- Primitive Data Type๊ณผ ๋์ผํ๊ฒ ๊ฐ์ ๋ฐ๋ก ์ง์ด๋ฃ๋๋ค.
- ํ์ง๋ง ์์คํ
์ด ์์์ ๊ฐ์ฒด๋ก ๋ง๋๋ ๊ฒ์ด์ง, ์์ ๋ฐ์ดํฐ ํ์
์ ์๋๋ค.
- String ๋ฌธ์์ด์ ์ฌ์ฉ ๋น๋๊ฐ ๋๊ณ , ๋์ผํ ๋ฌธ์์ด์ ๋ํ ๊ฐ์ฒด๋ฅผ ๋ง์ด ๋ง๋๋ ๊ฒ์ ๋ญ๋น
โ ๋ฌธ์์ด ์์ Pool ์ ๋ง๋ค์ด ๋๊ณ , ๋์ผํ ๋ฌธ์์ด ์ฌ์ฉ ์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉ!
New ํค์๋๋ฅผ ํตํ String ์์ฑ
- String s = new String();
- ๊ฐ์ ๊ฐ์ด๋ผ ํ๋๋ผ๋ new ํค์๋๋ฅผ ์ฌ์ฉํ์๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ ์๋ก์ด ๊ฐ์ฒด๋ฅผ ๋ง๋ ๋ค.
- ๋จ์ํ ๋ฌธ์์ด๋ง ์ง์ด๋ฃ๋ ๊ฒ์ด ์๋๋ผ String์ผ๋ก ์์ฑํ ์ ์๋๋ก ํ๋ ๋ง์ Overloading์ ์ง์ํ๋ค. (์ธ์ฝ๋ฉ ๋ฐฉ๋ฒ์ ๋ณ๊ฒฝ, char[]์ ํตํ String ์์ฑ)
String์ ๋น๊ต
- String์ ๊ฐ์ฒด์ด๋ค. ๋ฐ๋ผ์ ๊ฐ์ ๋น๊ต ์ == ์ฐ์ฐ์๊ฐ ์๋ equals() ํจ์๋ฅผ ํตํด ๋น๊ตํ๋ค.
* ์ฐธ๊ณ
ใด String s1 = "hello"; String s2 = "hello";
ใด s1 == s2 ์ true๊ฐ ๋์จ๋ค. ์ด๊ฒ์ hello ๊ฐ์ด ๊ฐ์์๊ฐ ์๋ Literal ํ๊ธฐ๋ก ์ธํด
s1๊ณผ s2 ์์ Pool์ ๊ฐ์ ๊ฐ์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ Reference์ด๊ธฐ ๋๋ฌธ์ด๋ค
ใด new String์ ํตํด ์์ฑํ๋ ๊ฒฝ์ฐ s1 โ s2 ์ด๋ค.
Class์ ๊ฐ์ฒด์ Memory ๊ตฌ์กฐ (static - ํด๋์ค ๋ณ์)
Class ์ ์, ๊ฐ์ฒด ์์ฑ ์ ๋ฉ๋ชจ๋ฆฌ
Class Area
- Class์ ์ ์ byte code๊ฐ ๋ค์ด์๋ค.
- Static์ผ๋ก ์ ์ธํ ํด๋์ค ๋ณ์๊ฐ ๋ค์ด์๋ค.
ใด Class Area์ ํ๊ฐ๋ง ์กด์ฌํ๊ธฐ ๋๋ฌธ์ ์์ ์ ํด๋์ค, ๋ชจ๋ ๊ฐ์ฒด์ ์ ์ฉ๋๋ค.
Heap
- ๋์ ์์ฑํ ๊ฐ์ฒด๊ฐ ๋ค์ด์๋ค.
Stack
- ์ค๋ ๋์์ ์์ฑํ ๊ฐ์ฒด ์ฐธ์กฐ๋ณ์๊ฐ ๋ค์ด์๋ค.