-
JAVA ์๋ฐ ๋ฐฐ์ดJAVA 2020. 7. 31. 23:43
๐ฏ ์๋ฐ์ ๋ฐฐ์ด๊ณผ ์์ฑ๋ฐฉ๋ฒ, ์ด์ฐจ์๋ฐฐ์ด์ ์์๋ณธ๋ค.
๋ฐฐ์ด Array
์์ ๋ฐ์ดํฐ๋ ๋ณ์์ ๋ด๊ณ , ํฐ ๋ฐ์ดํฐ๋ ๋ฐฐ์ด ๋ฐ ์ปฌ๋ ์ ์ ๋ด๋ ๊ฒ์ด ์ข๋ค. ๋ฐฐ์ด์ ๊ฐ์ ๋ฐ์ดํฐํ๋ง ์ ์ฅ๊ฐ๋ฅํ๋ฉฐ ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ ๋ฐ์ดํฐ ๋ชจ๋ ๊ด๋ฆฌํ ์ ์๋ค. ๋ณ์๋ ์ ์ธ๋ง ํ๋ฉด ์ฌ์ฉํ ์ ์์ง๋ง ๋ฐฐ์ด์ ์ ์ธ๊ณผ ์์ฑ์์ ์ด ํ์ํ๋ค.
๋ฐฐ์ด์ ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ผ ๋ฐ์ดํฐ์ ์์น๊ฐ์ ์ ์ฅํ๋ฉฐ ๊ฐ์ฒด๋ก ์ฌ์ฉํ๊ธฐ ์ํด์๋ ๋ฉ์ธํจ์ ์์ new ํค์๋๋ฅผ ๋ถ์ฌ ์์ฑํด์ผ ํ๋ค. ๋ฐฐ์ด์ด ์์ฑ๋๋ฉด ์ง์ ํ ๋ฐ์ดํฐํ์ ์ ๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ด๊ธฐํ๋๋ค.
1) ๋ฐฐ์ด ์ ์ธ
int [] num;
String [] name;
2) ๋ฐฐ์ด ์์ฑ //๋ฐฉ๋ง๋ค๊ธฐ
๋ฐฐ์ด๋ช = new ๋ฐ์ดํฐํ[ํฌ๊ธฐ];
num = new int[3];
name = new String[2];
2-1) ๋ฐฐ์ด ์ ์ธ๊ณผ ์์ฑ์ ํ๋ฒ์
int [] num = new int[3];
ใ//1. ๋ฐฐ์ด์ ์ธ //๋ฐ์ดํฐํ์ [] ๋ณ์๋ช ; int [] num; //2. ๋ฐฐ์ด์์ฑ //๋ณ์๋ช = new ๋ฐ์ดํฐํ์ [ํฌ๊ธฐ]; num = new int[3]; //3. ๋ฐฐ์ด์ด๊ธฐํ num[0] = 10; num[1] = 20; num[2] =30; // num[3] = 40; //error. ๋ฐฉ์ 3๊ฐ ๋ง๋ค์ด์ง๊ธฐ๋ก ์ ์ธ๋จ. //ํ๋ฆฐํธ System.out.println(num[0]); System.out.println(num[1]); System.out.println(num[2]); System.out.println("๋ฐฐ์ดํฌ๊ธฐ(๊ธธ์ด) : "+num.length); for(int i=0; i<num.length; i++) { //3๊น์ง ๊ฐ์ 3๋์ด๊ฐ๋ฉด ๋น ์ ธ๋์ด. System.out.println(">>" + num[i]); }
๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ํฐ ์ธ๋ฑ์ค๋ฅผ ์ฌ์ฉํ๋ฉด ์์ธ๊ฐ ๋ฐ์ํ๋ค.
java.lang.ArrayIndexOutOfBoundsException
num.length
๋ ๋ฐฐ์ด์ ํฌ๊ธฐ(๋ฐฉ ๊ฐฏ์)๋ฅผ ์๋ฏธํ๋ค.๋ฆฌํฐ๋ด์ ์ด์ฉํ ๋ฐฐ์ด์์ฑ
์ผ์ผ์ด ๋ฐฐ์ด์ด๊ธฐํ ํ์์์ด
int [] kor = {100, 80, 80};
์ผ๋ก ์์ฑ ๋ฐ ์ด๊ธฐํ๋ฅผ ํ๋ฒ์ ํ ์ ์๋ค. ๋ฐฐ์ด ์ ์ธ๊ณผ ํ ๋น์ ํ๋ฌธ์ฅ์ ๊ฐ์ด ์ ์ด์ฃผ๋ ๊ฒ์ด๋ค. ์ ์ฅ๋ ๋ฐ์ดํฐ์ ๊ฐ์๋ฅผ ์ ํํ๊ฒ ์๊ณ ์๋ ๊ฒฝ์ฐ์ ์ฌ์ฉ๋๋ค.//๋ฐฐ์ด ์ถ๋ ฅํ๊ธฐ int [] num = {1,2,3}; for(int x : num) { System.out.println("์ ์ ๋ฐฐ์ด ๊ฐ : "+x); } String [] name = {"ํ๊ธธ๋", "์ด์์ ", "์ ๊ด์"}; for(String s : name) { System.out.println("๋ฌธ์ ๋ฐฐ์ด ๊ฐ : "+s); }
// ๋ฐฐ์ด์ ์ดํฉ ํ๊ท ๊ตฌํ๊ธฐ int[] num; num = new int[5]; num[0] = 10; num[1] = 20; num[2] = 30; num[3] = 100; num[4] = 80; int sum = 0; System.out.println("๋ฐฐ์ดํฌ๊ธฐ(๊ธธ์ด) " + num.length); for (int i = 0; i < num.length; i++) { // System.out.println(">>" + num[i]); sum = sum + num[i]; } System.out.println("์ดํฉ = " + sum); System.out.println("ํ๊ท = " + sum / num.length); ----------------- ๋ฐฐ์ดํฌ๊ธฐ(๊ธธ์ด) 5 ์ดํฉ = 240 ํ๊ท = 48
num์ด๋ฆ์ ๋ฐฐ์ด์ ์ ์ธํ๊ณ , 5๊ฐ์ ๊ณต๊ฐ์ ์์ฑํ๊ณ , ๊ฐ๊ฐ์ ์ธ๋ฑ์ค์ ๋ฐ์ดํฐ๊ฐ์ ๋ฃ์ด์ฃผ์๋ค. ๊ทธ ๋ค์ ํ ํ ๋น ๋ณ์์ ์ดํฉ์ ๊ตฌํด์ ๋ฃ์ด์ฃผ๊ธฐ ์ํด sum๊ฐ์ 0์ผ๋ก ์ด๊ธฐํํ๋ค. ๋ฐฐ์ด์ ํฌ๊ธฐ num.length๋ 5๊ฐ ๋๋ค. ๋ฐฐ์ด ์ ์ฒด์ ๋ฐ์ดํฐ๊ฐ์ ์ ๋ถ ์ถ๋ ฅํ ์ ์๋๋ก for๋ฐ๋ณต๋ฌธ์ผ๋ก 0๋ถํฐ 4๊น์ง์ ์ธ๋ฑ์ค๋ฅผ ๋ชจ๋ ์ถ๋ ฅํ์ฌ sum ๋ณ์์ ํ๋์ฉ ๋ํด์ค๋ค. ๊ทธ๋ผ ์ดํฉ์ด ๋์ค๊ณ , ์ดํฉ์ ๋ฐฐ์ด์ ๊ฐฏ์๋ก ๋๋๋ฉด ํ๊ท ์ ๊ตฌํ ์ ์๋ค.
forEach ๋ฐ๋ณต๋ฌธ
for(๋ฐ์ดํฐํ ๋ณ์ : ๋ฐฐ์ด๋ช ) { ๋ณ์์ถ๋ ฅ; } for(int x : num) { System.out.println(x); }
๋ฐ๋ณต๋ฌธ์ด ๋ฐฐ์ด์ ๋ชจ๋ ์์๋ค์ ํ๋์ฉ ์ฐพ์์์ intํ์ x๋ณ์์ ์ ์ฅํ๋ค. forEach๋ ์กฐ๊ฑด์์ ์ฌ์ฉํ์ง ์๊ณ ๋ฐฐ์ด๋ช ๋ง ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ์ผ์ผ์ด ์ธ๋ฑ์ค๋ฅผ ๋ถ์ฌ์ค ํ์์๊ณ ์์์ ๋ฐ์ดํฐํ์ด ๋ง๋ ์ ๋ฅผ ์ฐพ์์ ์ถ๋ ฅํ๋ค.
// ๋ค ์ถ๋ ฅํด๋ณด๊ธฐ int [] num = new int[3]; num[0] = 10; num[1] = 20; num[2] = 30; num = new int[4]; num[0] = 10; num[1] = 20; num[2] = 30; num[3] = 40; for(int x : num) { System.out.println(x); } for(int i = 0; i<num.length; i++) { System.out.println(num[i]); }
//foreach๋ฌธ์ผ๋ก ํฉ๊ณ ๊ตฌํด๋ณด๊ธฐ int[] num = { 10, 20, 30, 40 }; // for Each ์ฌ์ฉ int sum = 0; for (int x : num) { sum += x; } System.out.println(sum); } //for ์ฌ์ฉ int sum2 = 0; for (int i = 0; i < num.length; i++) { sum2 += num[i]; } System.out.println(sum2);
//๊ณผ๋ชฉ๋ณ ์ ์ ํ๊ท ๊ตฌํ๊ธฐ ๊ตญ์ด 100 80 80 ์์ด 90 75 60 ๊ตญ์ดํ๊ท , ์์ดํ๊ท ์ถ๋ ฅ int[] kor = new int[3]; int[] eng = new int[3]; kor[0] = 100; kor[1] = 80; kor[2] = 80; eng[0] = 90; eng[1] = 75; eng[2] = 60; int sum1 = 0; int sum2 = 0; for (int i = 0; i < kor.length; i++) { sum1 = sum1 + kor[i]; sum2 = sum2 + eng[i]; } System.out.println("kor ํ๊ท : " + sum1 / kor.length); System.out.println("eng ํ๊ท : " + sum2 / eng.length);
//forEach๋ก ํ์ด๋ณด๊ธฐ int [] kor = {100, 80, 80}; int [] eng = {90, 75, 60}; int kor_sum = 0; for(int k : kor) { kor_sum += k; }System.out.println(kor_sum/kor.length); int eng_sum = 0; for(int e : eng) { eng_sum += e; }System.out.println(eng_sum/kor.length);
์ด์ฐจ์๋ฐฐ์ด
//1. ์ ๋ฐฉํ(๋ชจ๋ ํ์ ์ดํฌ๊ธฐ ๋์ผ) //๋ฐฐ์ด์ ์ธ int [][] num; //๋ฐฐ์ด์์ฑ num = new int[2][3]; //2ํ 3์ด //์ธ๋ฑ์ค ๊ฐ ์ด๊ธฐํ num[0][0] = 10; num[0][1] = 20; num[0][2] = 30; num[1][0] = 40; num[1][1] = 50; num[1][2] = 60; System.out.println(num[0][0]); System.out.println(num[0][1]); for(int i=0; i<num.length; i++) { for(int j=0; j<num[i].length; j++) { System.out.println(num[i][j]); } } //๋ฐ๋ณต๋ฌธ forEach๋ก ์จ๋ณด๊ธฐ for (int[] i:num) { for(int j:i) { System.out.println(j); } }
// 2. ๋น์ ๋ฐฉํ(๋ชจ๋ ํ์ ์ดํฌ๊ธฐ๋์ผ) int [][] num = new int[2][]; //2ํ num[0] = new int[3]; num[1] = new int[2];//๋น์ ๋ฐฉํ ์์ฑ //์ด๊ธฐํ num[0][0] =10; num[0][1] =20; num[0][2] =30; num[1][0] =40; num[1][1] =50; for(int i=0; i< num.length; i++) { for(int j=0; j <num[i].length; j++) { System.out.println(num[i][j]); } } for (int[] is : num) { for(int x :is) { System.out.println(x); } } System.out.println("ํ์ ๊ฐฏ์:"+num.length); System.out.println("1ํ์ ์ด๊ฐฏ์:"+num[0].length); System.out.println("2ํ์ ์ด๊ฐฏ์:"+num[1].length);
์ด์ฐจ์๋ฐฐ์ด์ ์ถ๋ ฅํ ๋ ์ค์ฒฉ๋ฐ๋ณต๋ฌธ์ด ์ฌ์ฉ๋๋ค.
๋ฆฌํฐ๋ด์ ์ด์ฉํ ์ด์ฐจ์ ๋ฐฐ์ด ์ฒ๋ฆฌํ๊ธฐ
String[][] name = { { "ํ๊ธธ๋", "์ด์์ " }, { "์ ๊ด์" } }; for (int i = 0; i < name.length; i++) { for (int j = 0; j < name[i].length; j++) { System.out.println("name[" + i + "][" + j + "]=" + name[i][j]); } }
newํค์๋์ ๋ฆฌํฐ๋ด์ ์ด์ฉํ ์ด์ฐจ์ ๋ฐฐ์ด ์์ฑ
int[][] num = new int[][] { { 1, 2 }, { 3, 4 }, { 5, 6, 7 } }; for (int i = 0; i < num.length; i++) { for (int j = 0; j < num[i].length; j++) { System.out.println("num[" + i + "][" + j + "]=" + num[i][j]); } } String [][] name = new String[][] { {"ํ๊ธธ๋","์ด์์ "}, {"์ ๊ด์"}}; for (int i=0; i<name.length; i++) { for(int j=0; j<name[i].length; j++) { System.out.println("name["+i+"]["+j+"]="+name[i][j]); } }
ํ๋ผ๋ฏธํฐ๋ก ๋ฐฐ์ด ์ ์ก(CallbyValue, CallbyReference)
public class CallByValue_Test { public void change(int num) { //call by value: //์ฐธ์กฐ๋ณ์๊ฐ ์๋ ๊ธฐ๋ณธํ ๋ณ์๋ค์ ๋ชจ๋ ์ธ์์ ๋ณต์ฌ๋จ num = 100; System.out.println("change num=="+num); } public static void main(String[] args) { int num = 1; System.out.println("ํธ์ถ์ num========"+num); CallByValue_Test test = new CallByValue_Test(); test.change(num); System.out.println("ํธ์ถ ํ NUM========="+num); } }
Call by Value๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ธ์๋ณ์์ ์ค์ ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๊ฐ์ ๋ณต์ฌํ์ฌ ๋ณด๋ธ๋ค. ๋ณต์ฌํด์ ๋ณด๋ธ๋ค๋ ๊ฑด ๋ด ๋ฐ์ดํฐ๋ ๊ทธ๋๋ก ๋จ์์๊ณ ์ค๋ ์๋ก ๋ง๋ค์ด์ง๋ค๋ ๋ป์ด๋ค. ์๋ก ๋ค๋ฅธ ๋๊ฐ์ ๋ณ์๊ฐ ์กด์ฌํ๋ ๊ฑฐ๋ค. ๋ฐ๋ผ์ ๊ฐ์ ์ด๋ฆ์ ๋ณ์๋ฅผ ์ฌ์ฉํ์ง๋ง ์ด๋ ํ ์ชฝ์ ์์ ํ๋๋ผ๋ ๋ค๋ฅธ ์ชฝ์ ๋ณ์๊ฐ ๋ณํ์ง ์๋๋ค. ํธ์ถ ์ ๊ณผ ํธ์ถ ํ num ๋ชจ๋ 1์ ์ถ๋ ฅํ๊ฒ ๋๋ค.
public class CallbyReference { public static void main(String[] args) { int[]num = {1,2,3,4}; System.out.println("์๋ ๋ฐฐ์ด"); for(int x : num) { System.out.println(x); } change(num); System.out.println("์์ ๋ ๋ฐฐ์ด"); for(int x : num) { System.out.println(x); } }//end main public static void change(int[] num) { num[0] = 100; } }//end class
call by reference๋ ๋ฉ์๋๋ฅผ ํธ์ถํ ๋ ์ธ์์ ์ฐธ์กฐํ ๋ฐ์ดํฐ๋ฅผ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๋ค. ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํด์ ๋๊ฒจ์ฃผ๋๊ฒ ์๋๋ผ ๋ฐ์ดํฐ์ ์ฃผ์๊ฐ์ ์ ๋ฌํ๊ธฐ ๋๋ฌธ์ ์ฃผ์๋ฅผ ์ฐธ์กฐํ์ฌ ๋ฐ์ดํฐ๋ฅผ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ฐฐ์ด์ ์ฐธ์กฐํ ๋ฐ์ดํฐํ์ ์ด๋ค. ์ฌ๊ธฐ์๋ 2๊ฐ์ ์ฐธ์กฐ๋ณ์๊ฐ ๋์ผํ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์๋ค. ๊ทธ๋์ ํ์ชฝ์ ๊ฐ์ ๋ณ๊ฒฝํ๋ฉด ๋ค๋ฅธ์ชฝ์๋ ์ํฅ์ ๋ฏธ์น๋ค.
System.arraycopy ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋ฐฐ์ด ๋ณต์ฌ
public class ArrayCopy { public static void main(String[] args) { int[] source = {1,2,3,4,5,6}; int[] destination = {10,9,8,7,6,5,4,3,2,1}; System.arraycopy(source, 0, destination, 0, source.length); for (int i : destination) { System.out.println(i); } } //1234564321
์์ฑ๋ ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ๋ณ๊ฒฝํ ์ ์๋ค. ๋ณ๊ฒฝ์ ์ํ ๊ฒฝ์ฐ ์๋ก ๋ฐฐ์ด์ ์์ฑํด์ ์๋ ๋ฐฐ์ด์ ์ ๋ฐฐ์ด์ ๋ณต์ฌํด์ ์ฌ์ฉํด์ผ ํ๋ค. ๋ฉ์๋์ ํ์์ ๋ณด๋ฉด source ๋ฐฐ์ด์ ํฌ๊ธฐ(6)๋งํผ source ๋ฐฐ์ด ์ธ๋ฑ์ค[0]๋ถํฐ ๋ณต์ฌํด์ des๋ฐฐ์ด์ [0]์๋ฆฌ๋ถํฐ์ ๋ถ์ฌ๋ฃ๊ธฐ ํ๋ค๋ ์๋ฏธ๋ค.
๐ NEXT : ์๋ฐ ๊ฐ์ฒด์ ํด๋์ค ๊ณต๋ถํ๊ธฐ
๋ฐ์ํ'JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JAVA ์๋ฐ ํด๋์ค ๋ชจ๋ํ ์ฐ์ตํ๊ธฐ (0) 2020.08.03 JAVA ์๋ฐ ๊ฐ์ฒด, ํด๋์ค, ๋ฉ์๋, ์์ฑ์ (0) 2020.08.02 JAVA ์๋ฐ ์กฐ๊ฑด๋ฌธ๊ณผ ๋ฐ๋ณต๋ฌธ (0) 2020.07.30 JAVA ์๋ฐ ์ฐ์ฐ์ 6๊ฐ์ง Operator (0) 2020.07.29 JAVA ์๋ฐ ์๋ณ์์ ๋ฐ์ดํฐ ํ ๋ณํ (0) 2020.07.28