๐ ๋ฐฐ์ด
: ๊ฐ์ ์๋ฃํ์ ๋ณ์๋ฅผ ํ๋์ ๋ฌถ์์ผ๋ก ๋ค๋ฃจ๋ ๊ฒ
: ๋ฐฐ์ด์ ์ ์ฅ๋ ๊ฐ๋ง๋ค ์ธ๋ฑ์ค ๋ฒํธ๊ฐ 0๋ถํฐ ์์ํ์ฌ ์ค์
๐ ๋ฐฐ์ด ์ ์ธ๊ณผ ํ ๋น
๐น ๋ฐฐ์ด ์ ์ธ
์๋ฃํ[] ๋ฐฐ์ด๋ช ;
์๋ฃํ ๋ฐฐ์ด๋ช [];
๐น ๋ฐฐ์ด ํ ๋น
์๋ฃํ[] ๋ฐฐ์ด๋ช = new ์๋ฃํ[๋ฐฐ์ดํฌ๊ธฐ];
์๋ฃํ ๋ฐฐ์ด๋ช [] = new ์๋ฃํ[๋ฐฐ์ดํฌ๊ธฐ];
๐ก ๋ฐฐ์ด์ ํฌ๊ธฐ๋ ํ ๋น ๋ ์ดํ์๋ ๋ฐ๋ ์ ์๋ค.
ex) int[] arr = new int[3];
ex) int arr[] = new int[3];
๐ ๋ฐฐ์ด ์ ์ฅ ๊ตฌ์กฐ
: ๋ฐฐ์ด์ ์ฐธ์กฐ๋ณ์๋ก Heap ์์ญ์ ํ ๋น๋๋ฉฐ ๋ฐฐ์ด ๊ณต๊ฐ์ ์ฃผ์๋ฅผ ์ ์ฅ
: ๋ฐฐ์ด ๊ณต๊ฐ์ ์ฃผ์๋ฅผ ์ด์ฉํด ์ธ๋ฑ์ค๋ฅผ ์ฐธ์กฐํ๋ ๋ฐฉ์์ผ๋ก ๊ฐ ์ฒ๋ฆฌ
๋ฉ๋ชจ๋ฆฌ๋ ํจ์จ์ ์ธ ๊ด๋ฆฌ๋ฅผ ์ํด์ Stack Heap Static ์์ญ์ผ๋ก ๋๋์ด ์ ์ฅ์ด ์ด๋ฃจ์ด์ง๋ค.
์ผ๋ฐ์ ์ธ ๋ณ์๋ค์ Stack์์ญ์ ์ ์ฅ๋๋ค.
new ์ฐ์ฐ์์ ์ํด์ ๋์ ์ผ๋ก ํ ๋น ๋ ๋ฉ๋ชจ๋ฆฌ๋ Heap ์์ญ์ ์ ์ฅ๋๋ค.
๐น arr์ด๋ฆ์ ๊ฐ์ง ๋ฐฐ์ด์ ์ฃผ์๊ฐ์ ์ฐธ์กฐํ ์ ์๋ ์ฐธ์กฐ๋ณ์๋ Stack์์ญ์ ์ ์ฅ๋๋ค.
๐น new ์ฐ์ฐ์๋ฅผ ํตํด ํ ๋น ๋ intํ 4๊ฐ ํฌ๊ธฐ์ ๋ฐฐ์ด์ Heap์์ญ์ ์ ์ฅ๋๋ค.
๐น Heap์์ญ์ ํ ๋น ๋ ์ฃผ์๊ฐ์ด 1234๋ผ๋ฉด ๊ทธ ๊ฐ์ด arr์ด๋ผ๋ ์ฐธ์กฐ๋ณ์์ ์ ์ฅ๋ผ์ ์ธ๋ฑ์ค๋ฅผ ์ฐธ์กฐํด์ ๊ฐ๊ฐ์ ๊ฐ์ ์ ๊ทผํ ์ ์๋ค.
๐ ๋ฐฐ์ด ์ด๊ธฐํ
๐น ์ธ๋ฑ์ค๋ฅผ ์ด์ฉํ ์ด๊ธฐํ
arr[0] = 1;
arr[1] = 2;
๐น for๋ฌธ์ ์ด์ฉํ ์ด๊ธฐํ
for(int i=0; i<arr.length; i++) {
arr[i]=i;
}
๐ก ๋์ ๋์ด์ผํ ๋ฆฌํฐ๋ด ๊ฐ์ด ๊ท์น์ ์ผ ๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก ๋ฐฐ์ด ์ด๊ธฐํ ๊ฐ๋ฅ
๐ก arr.length : ๋ฐฐ์ด์ ๊ธธ์ด
๐น ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
int[] arr = {1,2,3,4,5};
int[] arr = new int[] {1,2,3,4,5};
String fruit[] = {"์ฌ๊ณผ", "ํฌ๋", "์ฐธ์ธ"};
package example.array;
import java.util.Arrays;
public class Array {
public void testArray() {
//๋ฐฐ์ด ์ ์ธ : stack์ ๊ณต๊ฐ์ ์์ฑ, ์ฃผ์๊ฐ์ ๊ฐ์ง๊ณ ์์
boolean[] booleanArr; //๋
ผ๋ฆฌํ ๋ฐฐ์ด
//๋ฐฐ์ด ํ ๋น : heap์ ๊ณต๊ฐ์ ์์ฑ, ์ง์ง ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ง๊ณ ์์
double[] doubleArr = new double[2];
//๋ฐฐ์ด ์ด๊ธฐํ
//1. ์ธ๋ฑ์ค ์ด์ฉ
doubleArr[0] = 100.123456;
doubleArr[1] = Math.random();
// 0<= Math.random() <1
// 1๋ถํฐ 10๊น์ง์ ๋๋คํ ์ ์๋ ์ด๋ป๊ฒ ์ป์ ์ ์์๊น?
// 0*10 +1 <= (int)(Math.random()*10)+1 <1*10 +1
//2. ์ ์ธ๊ณผ ๋์์ ์ด๊ธฐํ
String[] strArr = {"์นํจ" ,"ํผ์" ,"์กฑ๋ฐ"}; //ํฌ๊ธฐ๊ฐ 3์ธ ๊ณต๊ฐ์์ฑ, ๊ฐ ์ด๊ธฐํ
char[] charArr = new char[] {'a', 'b' ,'c', 'd', 'e'};
//3. for๋ฌธ์ ์ด์ฉํ ์ด๊ธฐํ
int[] intArr = new int[6];
for(int i = 0; i<intArr.length; i++) {
intArr[i] = i;
}
//์ถ๋ ฅ
//1. ํ๋์ฉ ์ ๊ทผํด์ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ
for(int i=0; i<doubleArr.length; i++) {
System.out.println(doubleArr[i]);
}
for(int i=0; i<intArr.length; i++) {
System.out.println(intArr[i]);
}
//2. ์ ์ฒด ์ถ๋ ฅ - String ์์ฒด๋ก ๋ฝ์์ค๋ ๊ฒ
System.out.println(Arrays.toString(strArr));
System.out.println(Arrays.toString(charArr));
}
}
package example.array;
public class Run {
public static void main (String[] args) {
Array a = new Array();
a.testArray();
}
}
/*
100.123456
0.8593269665759886
0
1
2
3
4
5
[์นํจ, ํผ์, ์กฑ๋ฐ]
[a, b, c, d, e]
*/
๐ ๋ฐฐ์ด ๋ณต์ฌ
๐น ์์ ๋ณต์ฌ
: ๊ฐ์ฒด์ ์ฃผ์ ๊ฐ๋ง ๊ฐ์ ธ์ ์ฐธ์กฐํ ๋ณ์์ ์ ์ฅํ๊ณ ํ๋์ ๊ฐ์ฒด๋ฅผ ๋ ๋ณ์๊ฐ ์ฐธ์กฐํ๋ ๊ฒ
int[] arr1 = new int[4];
int[] arr2 = arr1;
package example.array;
import java.util.Arrays;
public class Array {
public void testShallowCopy() {
//์์ ๋ณต์ฌ
int[] originArr = {1,2,3,4,5};
int[] copyArr = new int[10];
copyArr = originArr; //originArr์ ์ฃผ์๊ฐ์ด copyArr๋ก ๋์
//๊ฐ์ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๋ ๊ฒ์ผ๋ก ๋ฐ๋์ด copyArr์ ๊ธธ์ด 5
System.out.println("===== ๋ณ๊ฒฝ ์ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
originArr[2] = 100;
System.out.println("===== ๋ณ๊ฒฝ ํ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
System.out.println("===== ์ฃผ์ ๊ฐ =====");
System.out.println(originArr);
System.out.println(copyArr);
}
}
package example.array;
public class Run {
public static void main (String[] args) {
Array ar = new Array();
//ar.testShallowCopy();
ar.testShallowCopy();
}
}
/*
===== ๋ณ๊ฒฝ ์ =====
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
===== ๋ณ๊ฒฝ ํ =====
[1, 2, 100, 4, 5]
[1, 2, 100, 4, 5]
===== ์ฃผ์ ๊ฐ =====
[I@372f7a8d
[I@372f7a8d
*/
๐น ๊น์ ๋ณต์ฌ
: ์๋ก์ด ๋ฐฐ์ด ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ ๊ธฐ์กด ๋ฐฐ์ด์ ๋ฐ์ดํฐ๋ฅผ ๋ณต์ฌํ๋ ๊ฒ
package example.array;
import java.util.Arrays;
public class Array {
public void testDeepCopy() {
//๊น์ ๋ณต์ฌ
int[] originArr = {1,2,3,4,5};
//for๋ฌธ ์ด์ฉ
int[] copyArr = new int[10];
for(int i = 0; i<originArr.length; i++) {
copyArr[i] = originArr[i];
}
System.out.println("===== ๋ณ๊ฒฝ ์ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
originArr[2] = 100;
System.out.println("===== ๋ณ๊ฒฝ ํ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
System.out.println("===== ์ฃผ์ ๊ฐ =====");
System.out.println(originArr);
System.out.println(copyArr);
}
/*
===== ๋ณ๊ฒฝ ์ =====
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
===== ๋ณ๊ฒฝ ํ =====
[1, 2, 100, 4, 5]
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
===== ์ฃผ์ ๊ฐ =====
[I@372f7a8d
[I@2f92e0f4
*/
public void testDeepCopy2() {
//๊น์ ๋ณต์ฌ - arraycopy()
int[] originArr = {1,2,3,4,5};
int[] copyArr = new int[10];
//src : ์๋ณธ ๋ฐฐ์ด
//srcPos : ์๋ณธ ๋ฐฐ์ด์ ๋ณต์ฌํ ์์์
//dest : ์นดํผ ๋ฐฐ์ด
//destPos : ์นดํผ ๋ฐฐ์ด์ ๋ถ์ฌ๋ฃ๊ธฐ ์์์
//length : ์๋ณธ ๋ฐฐ์ด์์ ๊ฐ์ ธ์ฌ ๊ธธ์ด
System.arraycopy(originArr, 0, copyArr, 0, originArr.length);
System.out.println("===== ๋ณ๊ฒฝ ์ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
originArr[2] = 100;
System.out.println("===== ๋ณ๊ฒฝ ํ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
System.out.println("===== ์ฃผ์ ๊ฐ =====");
System.out.println(originArr);
System.out.println(copyArr);
}
/*
===== ๋ณ๊ฒฝ ์ =====
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
===== ๋ณ๊ฒฝ ํ =====
[1, 2, 100, 4, 5]
[1, 2, 3, 4, 5, 0, 0, 0, 0, 0]
===== ์ฃผ์ ๊ฐ =====
[I@372f7a8d
[I@2f92e0f4
*/
public void testDeepCopy3() {
//๊น์ ๋ณต์ฌ - Arrays.copyOf()
int[] originArr = {1,2,3,4,5};
int[] copyArr = new int[10];
//original : ์๋ณธ ๋ฐฐ์ด
//newLength : ๋ณต์ฌํ ๊ธธ์ด
//๋ฌด์กฐ๊ฑด ์๋ณธ ๋ฐฐ์ด์ 0๋ถํฐ ์์
//๊ฐ์ ๋์
์์ผ์ผํจ
copyArr = Arrays.copyOf(originArr, originArr.length);
//copyArr์ originArr์ ๋ณต์ฌํ์ฌ ์๋กญ๊ฒ ์๊ธด ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ฒ ๋์์ผ๋ฏ๋ก ๊ธธ์ด 5
System.out.println("===== ๋ณ๊ฒฝ ์ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
originArr[2] = 100;
System.out.println("===== ๋ณ๊ฒฝ ํ =====");
System.out.println(Arrays.toString(originArr));
System.out.println(Arrays.toString(copyArr));
System.out.println("===== ์ฃผ์ ๊ฐ =====");
System.out.println(originArr);
System.out.println(copyArr);
}
/*
===== ๋ณ๊ฒฝ ์ =====
[1, 2, 3, 4, 5]
[1, 2, 3, 4, 5]
===== ๋ณ๊ฒฝ ํ =====
[1, 2, 100, 4, 5]
[1, 2, 3, 4, 5]
===== ์ฃผ์ ๊ฐ =====
[I@372f7a8d
[I@2f92e0f4
*/
}
๐ป ๋ฐฐ์ด์ ๊ฐ์ ๋ณต์ฌํ๊ณ ์ถ๋ค ๐ป
(a ๋ฐฐ์ด์ ๊ฐ์ b ๋ฐฐ์ด์ ๋ณต์ฌํ๋ ๊ฒฝ์ฐ)
๐ System.arraycopy(a, 0, b, 0, a.length);
: a ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ b ๋ฐฐ์ด์ ํฌ๊ธฐ์ ๊ฐ๊ฑฐ๋ ์์์ผ ํ๋ค.
: a ๋ฐฐ์ด์ ํฌ๊ธฐ๊ฐ b ๋ฐฐ์ด์ ํฌ๊ธฐ๋ณด๋ค ์์ผ๋ฉด b ๋ฐฐ์ด์ ๋๋จธ์ง ๊ฐ๋ค์ 0์ด๋ค.
๐ b = Arrays.copyOf(a, a.length);
: b ๋ฐฐ์ด์ ํฌ๊ธฐ์ ์๊ด ์์ด a ๋ฐฐ์ด์ ํฌ๊ธฐ๋ก ๊ทธ๋๋ก ๋ณต์ฌ๋๋ค.
'Dev > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA๊ธฐ์ด(15)] 2์ฐจ์ ๋ฐฐ์ด (0) | 2022.05.08 |
---|---|
[JAVA๊ธฐ์ด(14)] ๋ฐฐ์ด ์ค์ต(1), (2) (0) | 2022.05.08 |
[JAVA๊ธฐ์ด(12)] ๋ถ๊ธฐ๋ฌธ ์ค์ต(1), (2) / next(), nextLine() ์ฐจ์ด / equals ๋ฉ์๋ (0) | 2022.05.08 |
[JAVA๊ธฐ์ด(11)] ๋ถ๊ธฐ๋ฌธ - break, continue (0) | 2022.05.08 |
[JAVA๊ธฐ์ด(10)] ๋ณ์ฐ๊ธฐ ์ค์ต, ์ฌ๋ฌ๊ฐ์ง ํ์ด (0) | 2022.05.08 |