[JAVA๊ธฐ์ดˆ(13)] ๋ฐฐ์—ด Array, ๋ฐฐ์—ด ๋ณต์‚ฌ

2022. 5. 8. 19:04ยทDev/Java
728x90
๋ฐ˜์‘ํ˜•

๐Ÿ“ ๋ฐฐ์—ด

: ๊ฐ™์€ ์ž๋ฃŒํ˜•์˜ ๋ณ€์ˆ˜๋ฅผ ํ•˜๋‚˜์˜ ๋ฌถ์Œ์œผ๋กœ ๋‹ค๋ฃจ๋Š” ๊ฒƒ

: ๋ฐฐ์—ด์€ ์ €์žฅ๋œ ๊ฐ’๋งˆ๋‹ค ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ 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 ๋ฐฐ์—ด์˜ ํฌ๊ธฐ๋กœ ๊ทธ๋Œ€๋กœ ๋ณต์‚ฌ๋œ๋‹ค.

728x90
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€

'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
'Dev/Java' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • [JAVA๊ธฐ์ดˆ(15)] 2์ฐจ์› ๋ฐฐ์—ด
  • [JAVA๊ธฐ์ดˆ(14)] ๋ฐฐ์—ด ์‹ค์Šต(1), (2)
  • [JAVA๊ธฐ์ดˆ(12)] ๋ถ„๊ธฐ๋ฌธ ์‹ค์Šต(1), (2) / next(), nextLine() ์ฐจ์ด / equals ๋ฉ”์†Œ๋“œ
  • [JAVA๊ธฐ์ดˆ(11)] ๋ถ„๊ธฐ๋ฌธ - break, continue
๋ธ”ํ˜œ
๋ธ”ํ˜œ
  • ๋ธ”ํ˜œ
    Blehye Dev
    ๋ธ”ํ˜œ
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (133)
      • Dev (69)
        • Java (45)
        • HTML5 CSS3 (16)
        • Javascript (2)
        • ๊ตญ๋น„ํ•™์› (4)
        • Error! (2)
      • Algorithm (12)
        • PS (9)
        • Algorithm (3)
      • English (22)
        • Webtoon (6)
        • Grammar In Use (15)
      • DAILY (20)
        • Trip (10)
        • Musical (2)
        • Swimming (5)
        • Book (1)
        • Test (1)
      • etc. (10)
        • Display (10)
  • ๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

    • ํ™ˆ
    • STUDY
    • DAILY
  • ๋งํฌ

  • ๊ณต์ง€์‚ฌํ•ญ

  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    SKCTํ›„๊ธฐ
    ์ธ์ ์„ฑ
    ํ™๋Œ€๊ฐœ๋ฏธ
    ํƒœ์ข…๋Œ€
    ์—ฌ์žํ˜ผ์ž์—ฌํ–‰
    SKCT
    ํ•˜์ด๋‹‰์Šค
    ํฐ์—ฌ์šธ๋ฌธํ™”๋งˆ์„
    ๋ถ€์‚ฐํ˜ผ์ž์—ฌํ–‰
    ๋ถ€์‚ฐ์—ฌํ–‰
    SKํ•˜์ด๋‹‰์Šค
    ํ˜ผ์ž์—ฌํ–‰
    SKCT์‹œํ—˜
    SKCTํŒ
    ์†ก๋„ํ•ด์ˆ˜์š•์žฅ
    SKCT๊ฟ€ํŒ
    ๊ฐ์ฒœ๋ฌธํ™”๋งˆ์„
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • ๋ฐ˜์‘ํ˜•
    250x250
  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.3
๋ธ”ํ˜œ
[JAVA๊ธฐ์ดˆ(13)] ๋ฐฐ์—ด Array, ๋ฐฐ์—ด ๋ณต์‚ฌ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”