๐โ ๋ฐฐ์ด(Array)์ด๋,
๋์ผํ ์๋ฃํ์ ๋ฌถ์(์ฐ์๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๊ฐ์ ์ ์ฅํ๊ณ ์ฌ์ฉํ๊ธฐ ์ํ ์ฉ๋)
- ๋ฐฐ์ด์ heap ์์ญ์ new ์ฐ์ฐ์๋ฅผ ์ด์ฉํ์ฌ ํ ๋น
๐โ ์ ๊น ! ์ ๋ฐฐ์ด์ ์ฌ์ฉํด์ผํ๋์?
- ๋ง์ฝ ๋ฐฐ์ด์ ์ฌ์ฉํ์ง ์๋๋ค๋ฉด ๋ณ์๋ฅผ ์ฌ๋ฌ ๊ฐ ์ฌ์ฉํด์ผํจ
- ์ฐ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ผ๋ก ๊ด๋ฆฌํ ์ ์์
(๋ชจ๋ ๋ณ์์ ์ด๋ฆ์ ์ฌ์ฉ์๊ฐ ๊ด๋ฆฌํด์ผํจ)- ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ ์ฐ์์ ์ธ ์ฒ๋ฆฌ๊ฐ ๋ถ๊ฐ๋ฅ
์๋ฃํ[] ๋ฐฐ์ด๋ช
= new ์๋ฃํ[๋ฐฐ์ดํฌ๊ธฐ(๋ณ์๊ฐฏ์)]
int[] arr = new int[5];
>>> ๋ฐฐ์ด์ ํ๋์ ์ด๋ฆ์ผ๋ก ๊ด๋ฆฌ๋๋ ์ฐ์ ๋ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ด๊ณ ,
>>> ๊ณต๊ฐ๋ง๋ค ์ฐพ์๊ฐ ์ ์๋ ๋ฒํธ(์ธ๋ฑ์ค)๋ฅผ ์ด์ฉํด ์ ๊ทผ
int[] arr = new int[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;
>>> ๊ฐ์ ๋์
ํ ๋๋ ๋ฐ๋ณต๋ฌธ์ ์ฌ์ฉํ ์ ์์
for(int i = 0, value = 0; i < arr.length; i++) {
arr[i] = value += 10;
}
>>> ๋ฐฐ์ด์ ๊ฐ์ ๋์ ํด์ ๋ด์ ๋ณ์ ์ ์ธ
int sum2 = 0;
>>> ์ผ๋ฐ์ ์ธ ๋ณ์์ฒ๋ผ ์ฌ์ฉํ ์๋ ์์
sum2 += arr[0];
sum2 += arr[1];
sum2 += arr[2];
sum2 += arr[3];
sum2 += arr[4];
System.out.println("sum2 : " + sum2);
>>> ๋ฐฐ์ด์ ๊ฐ์ ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํด์ ๋์ ํ์ฌ ๋ด์ ๋ณ์
int sum3 = 0;
for(int i = 0; i < arr.length; i++) {
sum3 += arr[i];
}
System.out.println("sum3 : " + sum3);
์๋ฃํ[] ๋ฐฐ์ด๋ช
;
๐โ ์ ์ธ์ stack์ ๋ฐฐ์ด์ ์ฃผ์๋ฅผ ๋ณด๊ดํ ์ ์๋ ๊ณต๊ฐ์ ๋ง๋๋ ๊ฒ
int[] iarr;
char carr[];
๋ฐฐ์ด์ ํ ๋นํ ๋๋ ๋ฐ๋์ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ฅผ ์ง์ ํด์ฃผ์ด์ผํจ
// iarr = new int[];
iarr = new int[5];
carr = new char[10];
๐ Ref.
* ์ ์ธํ ๋ ํผ๋ฐ์ค(์ฐธ์กฐํ) ๋ณ์์ ๋ฐฐ์ด์ ํ ๋นํ์ฌ ๋์
ํ ์ ์์
* new ์ฐ์ฐ์๋ heap ์์ญ์ ๊ณต๊ฐ์ ํ ๋นํ๊ณ ๋ฐ์ํ ์ฃผ์๊ฐ์ ๋ฐํํ๋ ์ฐ์ฐ์
* ๋ฐ์ํ ์ฃผ์๋ฅผ ๋ ํผ๋ฐ์ค ๋ณ์์ ์ ์ฅํ๊ณ ์ด๊ฒ์ ์ฐธ์กฐํ์ฌ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์
์ฐธ์กฐ ์๋ฃํ(reference type)์ด๋ผ๊ณ ํ๋ค.
์๋ฃํ[] ๋ฐฐ์ด๋ช
= new ์๋ฃํ[๋ฐฐ์ดํฌ๊ธฐ(๋ณ์๊ฐฏ์)]
int[] iarr2 = new int[5];
char carr2[] = new char[10];
System.out.println("iarr : " + iarr); >>> 16์ง์๋ก ํํ๋ ์ด ๋ฐฐ์ด์ ์ฃผ์๊ฐ ์ถ๋ ฅ
System.out.println("carr : " + carr); >>> 16์ง์๋ก ํํ๋ ์ด ๋ฐฐ์ด์ ์ฃผ์๊ฐ ์ถ๋ ฅ
>>> hashCode() : ์ผ๋ฐ์ ์ผ๋ก๋ ๊ฐ์ฒด์ ์ฃผ์๊ฐ์ 10์ง์๋ก ๋ณํํ์ฌ ์์ฑํ ๊ฐ์ฒด์ ๊ณ ์ ํ ์ ์๊ฐ์ ๋ฐํ
System.out.println("iarr์ hashcode : " + iarr.hashCode()); >>> 10์ง์๋ก ๋ณํ๋ ์ด ๋ฐฐ์ด์ ์ฃผ์๊ฐ ์ถ๋ ฅ
System.out.println("carr์ hashcode : " + carr.hashCode()); >>> 10์ง์๋ก ๋ณํ๋ ์ด ๋ฐฐ์ด์ ์ฃผ์๊ฐ ์ถ๋ ฅ
๐ Ref.
* heap ๋ฉ๋ชจ๋ฆฌ๋ ์ด๋ฆ์ผ๋ก ์ ๊ทผํ๋ ๊ฒ์ด ์๋๋ผ '์ฃผ์'๋ก ์ ๊ทผํ๋ ์์ญ
* stack์ ์ ์ฅ๋ ์ฃผ์๋ก heap์ ํ ๋น๋ ๋ฐฐ์ด์ ์ฐพ์๊ฐ ์ ์์
>>> ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์ ์ ์๋ ๊ธฐ๋ฅ์ ํ๋๋ก ์ ๊ณต
>>> ์ฐธ๊ณ ๋ก String ๋ฌธ์์ด์ ๊ธธ์ด๋ ๋ฉ์๋๋ก ์ ๊ณตํ๊ณ ์๊ธฐ ๋๋ฌธ์ ๋ฌธ์์ด.length()๋ก ์ฌ์ฉ
System.out.println("iarr2์ ๊ธธ์ด : " + iarr2.length);
System.out.println("carr2์ ๊ธธ์ด : " + carr2.length);
>>> length : ๋ฉ์๋๊ฐ ์๋ 'ํ๋'๋ผ๋ ์ผ์ข
์ ๋ณ์
Scanner sc = new Scanner(System.in);
System.out.println("์๋ก ํ ๋นํ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ์
๋ ฅํ์ธ์ : ");
int size = sc.nextInt();
double[] darr = new double[size];
>>> ์
๋ ฅ๋ ๋ณ์๊ฐฏ์๋ฅผ ๋ณ์๋ก ๋ฃ๋ ๊ฒ๋ ๊ฐ๋ฅ (ex : 99 ์
๋ ฅ์, 99๊ฐ์ ๋ณ์๋ฅผ ๊ฐ์ง ๋ฐฐ์ด)
System.out.println("darr์ hashCode : " + darr.hashCode());
System.out.println("darr์ ๊ธธ์ด : " + darr.length);
>>> ์์ darr๊ณผ ๋ค๋ฅธ ํฌ๊ธฐ๊ฐ์ธ 30์ ๋ฃ์
darr = new double[30];
>>> ์ถ๋ ฅ๋ hashCode๋ฅผ ๋ณด๋ฉด ์์ darr์ ๋ค๋ฅธ ๊ฐ์ ๊ฐ์ง๊ณ ์๋ ๊ฒ์ ํ์ธํ ์ ์์
System.out.println("darr์ hashCode : " + darr.hashCode());
System.out.println("darr์ ๊ธธ์ด : " + darr.length);
๐ Ref.
* ํ ๋ฒ ์ง์ ํ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๋ณ๊ฒฝํ์ง ๋ชป ํจ
* ๋ฐฐ์ด์ ์ฌ์ด์ฆ๋ฅผ ๋ณ๊ฒฝํ ๊ฒ์ด ์๋๊ณ ์๋ก์ด ๋ฐฐ์ด์ ์์ฑํ์ฌ ๊ทธ ์ฃผ์๊ฐ์ ๋ ํผ๋ฐ์ค ๋ณ์์ ๋ฎ์ด์ด ๊ฒ
>>> ์์ darr์ null๊ฐ์ ๋ฃ์
darr = null;
>>> java.lang.NullPointerException์ด ๋ฐ์ํจ
>>> ์๋ฌด๊ฒ๋ ์ฐธ์กฐํ์ง์๊ณ null์ด๋ผ๋ ํน์ํ ๊ฐ์ ์ฐธ์กฐํ๊ณ ์๋ ๊ฒฝ์ฐ,
>>> ์ฐธ์กฐ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ๊ฒ ๋ ๋ ๋ฐ์ํ๋ ์๋ฌ
System.out.println("darr์ hashCode : " + darr.hashCode());
System.out.println("darr์ ๊ธธ์ด : " + darr.length);
>>> java.lang.NullPointerException ์ค๋ฅ ์์ธ :
darr๋ผ๋ ์ฐธ์กฐ๋ณ์๊ฐ null์ด๋ผ๋ ๊ฐ์ ๊ฐ์ ธ ์ฐธ์กฐํ๋ ๊ฒ์ด ์๊ธฐ ๋๋ฌธ
๐ Ref.
* ํ ๋ฒ ํ ๋น๋ ๋ฐฐ์ด์ ์ง์ ์ง์ธ ์๋ ์์
๋ค๋ง ๋ ํผ๋ฐ์ค ๋ณ์๋ฅผ null๋ก ๋ณ๊ฒฝํ๋ฉด, ๋์ด์ ์ฃผ์๊ฐ ์ฐธ์กฐ๋์ง ์๋ ๋ฐฐ์ด์ด ๋์ด
์ผ์ ์๊ฐ์ด ์ง๋ ํ heap์ old์์ญ์ผ๋ก ์ด๋ํ์ฌ GC(garbage collecter)๊ฐ ์ญ์ ์ํด
* ํ๋ฒ ์ฐพ์๊ฐ ์ ์๋ ์ฃผ์๊ฐ์ ์์ด๋ฒ๋ฆฐ ๋ฐฐ์ด์ ๋ค์ ์ฐธ์กฐ ๋ถ๊ฐ๋ฅ
๊ธฐ๋ณธ์ ์ผ๋ก ๋ฐฐ์ด์ ์ ์ธํ๊ณ ํ ๋นํ๊ฒ ๋๋ฉด ๋ฐฐ์ด์ ๊ฐ ์ธ๋ฑ์ค๋ ์๋ฐ์์ ์ง์ ํ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ๋ ์ํ
(heap์์ญ์ ๊ฐ์ด ์๋ ๋น ๊ณต๊ฐ์ด ์กด์ฌํ ์ ์์)
int์ ๊ธฐ๋ณธ ๊ฐ์ธ 0์ผ๋ก ์ด๊ธฐํ ๋์ด์์
int[] iarr = new int[5];
for(int i = 0; i < iarr.length; i++) {
>>> i๋ 0(index๋ 0๋ถํฐ ์์ํ๋ฏ๋ก), ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ์งง์ ๋๊น์ง 1์ฉ ์ฆ๊ฐ
System.out.println(iarr[i]);
}
>>> iarr์ int ๋ค์ฏ๊ฐ์ ๊ณต๊ฐ์ด ์์ฑ๋์ด์๊ณ ,
>>> int i๊ฐ ๋ฐฐ์ด์ ๊ธธ์ด๋ณด๋ค ์งง์ ๋๊น์ง 1์ฉ ์ฆ๊ฐ.
>>> ์์ง ๋ค์ฏ๊ฐ์ ๊ณต๊ฐ์ ๊ฐ์ ๋ฃ์ง ์์์ผ๋ฏ๋ก intํ์ ๊ธฐ๋ณธ๊ฐ์ธ 0์ด ์ด ๋ค์ฏ๊ฐ๊ฐ ์ถ๋ ฅ
์ง์ ๋ ๊ธฐ๋ณธ๊ฐ ์ธ์ ๊ฐ์ผ๋ก ์ด๊ธฐํ ํ๊ณ ์ถ์ ๊ฒฝ์ฐ { } ๋ธ๋ญ์ ์ด์ฉ
์ด๋, new ์ฐ์ฐ์๋ฅผ ์ฌ์ฉํ์ง ์์๋ ๋๋ฉฐ ๊ฐ์ ๊ฐ์๋งํผ ์๋์ผ๋ก ํฌ๊ธฐ๊ฐ ์ค์ ๋จ
int[] iarr2 = {11, 22, 33, 44, 55}; >>> ์๋์ ๋์ผํ ์ (new int[]์์ฑํ์ง ์์๋ ์๋์ผ๋ก ๊ฐ ๋งํผ ํฌ๊ธฐ ์ค์ ๋จ)
int[] iarr3 = new int[] {66, 77, 88, 99};
for(int i = 0; i < iarr2.length; i++) {
System.out.println(iarr2[i]);
}
for(int i = 0; i < iarr3.length; i++) {
System.out.println(iarr3[i]);
}
๋ฌธ์์ด๋ ๋ฐฐ์ด๋ก ์ฌ์ฉํ ์ ์์
๋ฌธ์์ด์ ์ฐธ์กฐ ์๋ฃํ์ด๋ฏ๋ก ์ด๊ธฐํ ๋์ ๊ฒฝ์ฐ 0์ธ null๊ฐ ์ถ๋ ฅ
String[] sarr = new String[5];
for(int i = 0; i < sarr.length; i++) {
System.out.println(sarr[i]);
}
String[] sarr2 = {"apple", "banana", "grape", "orange"};
for(int i = 0; i < sarr2.length; i++) {
System.out.println(sarr2[i]);
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
>>> 5๋ช
์ ์๋ฐ ์ ์๋ฅผ ์ ์ฅํ ๋ฐฐ์ด ํ ๋น
int[] score = new int[5];
>>> ๋ฐ๋ณต๋ฌธ์ ์ด์ฉํ์ฌ ๋ฐฐ์ด ์ธ๋ฑ์ค์ ํ๋์ฉ ์ ๊ทผํด์ ์ ์๋ฅผ ์ ์ฅ
for(int i = 0; i < score.length; i++) {
System.out.print((i + 1) + "๋ฒ์งธ ํ์์ ์๋ฐ ์ ์๋ฅผ ์
๋ ฅ : ");
score[i] = sc.nextInt();
>>> ๊ธฐ๋ณธ๊ฐ์ธ 0์ ์ค์บ๋๋ก ์
๋ ฅ๋ฐ์ ์๋ฅผ ๋ฃ์ด์ฃผ๋ ์
}
>>> ํฉ๊ณ์ ํ๊ท ์ ๊ตฌํ๊ธฐ
double sum = 0.0;
double avg = 0.0;
>>> ํฉ๊ณ๋ ๋ชจ๋ ์ธ๋ฑ์ค์ ๊ฐ์ sum ๋ณ์์ ๋์ ํด์ ๋ด๊ธฐ
for(int i = 0; i < score.length; i++) {
sum += score[i];
>>> 0 - 4๋ฒ ์ธ๋ฑ์ค๊น์ง์ ํฉ์ sum์ ๋์
}
>>> ํ๊ท ์ ํฉ๊ณ๋ฅผ ๊ตฌํ ๊ฐ์์ ๋ฐฐ์ด์ ๊ธธ์ด(์ซ์)๋ก ๋๋๊ธฐ
avg = sum / score.length;
System.out.println("sum : " + sum);
System.out.println("avg : " + avg);
}
public static void main(String[] args) {
>>> ๋ชจ์๊ณผ ์นด๋ ์ซ์๋ณ๋ก ๊ฐ์ ์ ์ฅํ ๋ ์ข
๋ฅ์ ๋ฐฐ์ด์ ๋ง๋ฌ
String[] shapes = {"SPADE", "CLOVER", "HEART", "DIAMOND"}; >>> ๋ฐฐ์ด ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
String[] cardNumbers = {"2", "3", "4", "5", "6", "7", "8", "9", "10", "JACK", "QUEEN", "KING", "ACE"};
>>> ๋ฐฐ์ด ์ธ๋ฑ์ค ๋ฒ์์ ๋์ ์์ฑ
int randomShapeIndex = (int)(Math.random() * shapes.length); >>> '๋ฐฐ์ด์ ๊ธธ์ด(shapes.length)'๋ณ์๋ฅผ ๋ฃ์ด์ผ ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ ๋ฌ๋ผ์ก์๊ฒฝ์ฐ, ์ฝ๋ ๋ณ๊ฒฝ์ ํ์ง์์๋๋จ
int randomCardNumberIndex = (int)(Math.random() * cardNumbers.length);
>>> index ์ด์ฉํด์ ์ถ๋ ฅํ๊ธฐ
System.out.println("๋น์ ์ด ๋ฝ์ ์นด๋๋ " + shapes[randomShapeIndex] + " " + cardNumbers[randomCardNumberIndex] + "์นด๋์
๋๋ค.");
>>> ๋ฐฐ์ด๋ช
[์๋ฌด์ธ๋ฑ์ค๋ฝ์๋ฝ์๋ณ์] => ๋ฐฐ์ด ์ค ์๋ฌด์ธ๋ฑ์ค ์ถ๋ ฅ
}