λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°

JAVA

JAVA STUDY - CH 5 : λ°°μ—΄ Array

πŸ“Œ λ°°μ—΄μ΄λž€?

λ§Žμ€ μ–‘μ˜ 데이터λ₯Ό 손 μ‰½κ²Œ 닀루기 μœ„ν•΄ μ‚¬μš©ν•œλ‹€.

 

"같은 νƒ€μž…μ˜ μ—¬λŸ¬ λ³€μˆ˜λ₯Ό ν•˜λ‚˜μ˜ 묢음으둜 λ‹€λ£¨λŠ” 것"

 

// λ³€μˆ˜ κ°œμˆ˜κ°€ 증가함에 따라 int λ³€μˆ˜λ₯Ό κ³„μ†ν•΄μ„œ μΆ”κ°€ν•΄μ•Ό ν•œλ‹€.
int score1 = 90;
int score2 = 80;
int score3 = 70;
int score4 = 60;
int score5 = 50;

// λ³€μˆ˜μ˜ 이름이 λ‹€ λ‹€λ₯΄κΈ°μ— 반볡문으둜 ν‘œν˜„ν•  수 μ—†λ‹€.
System.out.println("학생1 점수: " + score1); 
System.out.println("학생2 점수: " + score2); 
System.out.println("학생3 점수: " + score3); 
System.out.println("학생4 점수: " + score4); 
System.out.println("학생5 점수: " + score5);

 

βœ”οΈλ°°μ—΄μ˜ νŠΉμ§•

β‘  배열은 같은 νƒ€μž…μ˜ λ°μ΄ν„°λ§Œ μ €μž₯ν•  수 μžˆλ‹€.

 

β‘‘ ν•œ 번 μƒμ„±λœ 배열은 길이λ₯Ό λŠ˜λ¦¬κ±°λ‚˜ 쀄일 수 μ—†λ‹€.

 

πŸ’‘λ°°μ—΄μ˜ μ„ μ–Έ, 생성, μ΄ˆκΈ°ν™”

νƒ€μž…[ ] λ³€μˆ˜μ΄λ¦„;               // 배열을 μ„ μ–Έ (배열을 닀루기 μœ„ν•œ μ°Έμ‘°λ³€μˆ˜ μ„ μ–Έ)
λ³€μˆ˜μ΄λ¦„ = new νƒ€μž… [길이];     // 배열을 생성(μ‹€μ œ μ €μž₯곡간을 생성)

 

 βœ… λ°°μ—΄μ˜ μ„ μ–Έ

  •   int [ ] score;

  μ°Έμ‘°λ³€μˆ˜λ₯Ό μœ„ν•œ 곡간을 λ§Œλ“œλŠ” 것이닀. (배열을 λ‹€λ£¨λŠ”λ° ν•„μš”ν•œ λ³€μˆ˜)

  μ›ν•˜λŠ” νƒ€μž…μ˜ λ³€μˆ˜λ₯Ό μ„ μ–Έν•˜κ³ , λ°°μ—΄μž„μ„ μ˜λ―Έν•˜λŠ” λŒ€κ΄„ν˜Έ [ ]λ₯Ό 뢙인닀. 

  λ°°μ—΄μ˜ μ£Όμ†Œκ°€ μ €μž₯λ˜λŠ” μž₯μ†Œμ΄λ‹€.

 

βœ… λ°°μ—΄μ˜ 생성

  • score = new int [5];

μ‹€μ œ 값을 μ €μž₯ν•  수 μžˆλŠ” 곡간을 λ§Œλ“œλŠ” 것이닀.

'new' μ—°μ‚°μžλ₯Ό μ‚¬μš©ν•˜μ—¬ μƒμ„±ν•œλ‹€.

 

β€» λ°°μ—΄μ˜ μ„ μ–Έκ³Ό 생성을 λ™μ‹œ

  • int [ ] score = new int [5];

βœ…  λ°°μ—΄μ˜ μ΄ˆκΈ°ν™”

배열은 생성과 λ™μ‹œμ— νƒ€μž…μ˜ κΈ°λ³Έκ°’μœΌλ‘œ μ΄ˆκΈ°ν™” λœλ‹€.

β€» λ°°μ—΄μ˜ 생성과 μ΄ˆκΈ°ν™”λ₯Ό λ™μ‹œ

  • int [ ] score = new int [ ] { 50, 60, 70, 80, 90 };

πŸ’‘λ°°μ—΄μ˜ μΈλ±μŠ€μ™€ 길이

 βœ…μΈλ±μŠ€ (Index)

인덱슀(index)λŠ” λ°°μ—΄μ˜ μš”μ†Œλ§ˆλ‹€ λΆ™μ—¬μ§„ μΌλ ¨λ²ˆν˜Έμ΄λ‹€.

"인덱슀의 λ²”μœ„λŠ” 0λΆ€ν„° '배열길이 -1' κΉŒμ§€"

 

 

 βœ…길이

배열을 생성할 λ•Œ κ΄„ν˜Έ [ ] μ•ˆμ— λ°°μ—΄μ˜ 길이λ₯Ό λ„£λŠ”λ‹€.

"λ°°μ—΄μ˜ κΈΈμ΄λŠ” intλ²”μœ„μ˜ μ–‘μ˜ μ •μˆ˜(0도 포함)이어야 ν•œλ‹€."

 

πŸ’‘λ°°μ—΄μ˜ ν™œμš©

βœ… λ°°μ—΄μ˜ 길이

 

배열이름.length

public static void main(String[] args){
    int[] arr = {1,2,3,4,5};
    System.out.println(arr.length);
    >> 5
}

 

β€» λ°°μ—΄μ˜ 길이λ₯Ό λ³€κ²½ν•˜λŠ” 방법 : 

1. 더 큰 배열을 μƒˆλ‘œ 생성

2. κΈ°μ‘΄ λ°°μ—΄μ˜ λ‚΄μš©μ„ μƒˆλ‘œμš΄ 배열에 볡사

 

βœ… λ°°μ—΄μ˜ 좜λ ₯

 

Arrays.toString(λ°°μ—΄)

public static void main(String[] args){
    int[] arr = {1,2,3,4,5};
    System.out.println(Arrays.toString(arr));
    >> [1,2,3,4,5]
}

 

βœ… λ°°μ—΄μ˜ 볡사

 

forλ¬Έ 반볡문 ν™œμš©

int[] arr = new int[5];
for(int i = 0; i < arr.length; i++) {
	arr[i] = i + 1;
}
    
int[] tmp = new int[arr.length*2];
for(int i = 0; i < arr.length; i++) {
	tmp[i] = arr[i];
}

// tmp이 κ°€λ¦¬ν‚€λŠ” λ°°μ—΄μ˜ μ£Όμ†Œκ°’μ„ arr에 μ €μž₯.
arr = tmp;

 

arraycopy(λ°°μ—΄)

public static void main(String[] args){
	char[] abc = { 'A', 'B', 'C' };
    char[] num = { '0', '1', '2' };
    
    char[] result = new char[abc.length+num.length];
    System.arraycopy(abc,0,result,0,abc.length);
    >> [ABC012]
    }

 

System.out.arraycopy( num, 0, newNum, 0, num.length );

= num[0] μ—μ„œ newNum[0]으둜 num.length 개의 데이터 볡사

 


πŸ“Œ String λ°°μ—΄

String ν΄λž˜μŠ€λŠ” char배열에 κΈ°λŠ₯(λ©”μ„œλ“œ)을 μΆ”κ°€ν•œ 것이닀.

 

πŸ’‘Stringλ°°μ—΄μ˜ μ„ μ–Έ, 생성, μ΄ˆκΈ°ν™”

String [ ] name = new String[3];    // 3개의 λ¬Έμžμ—΄μ„ 담을 수 μžˆλŠ” 배열을 μƒμ„±ν•œλ‹€.

String [ ] name = new String[ ] { "Kim", "Park", "Yi" };   // λ°°μ—΄ μ΄ˆκΈ°ν™”

 

배열에 싀체 객체가 μ•„λ‹Œ 객체의 μ£Όμ†Œκ°€ μ €μž₯λ˜μ–΄μžˆλ‹€.(μ°Έμ‘°ν˜• λ°°μ—΄) ↔ κΈ°λ³Έν˜• λ°°μ—΄

 

πŸ’‘Char λ°°μ—΄   VS   String 클래슀

string 객체(λ¬Έμžμ—΄)λŠ” 읽을 수만 μžˆμ„ 뿐 λ‚΄μš© 변경이 μ•ˆλœλ‹€.λ¬Έμžμ—΄ λ‚΄μš©μ΄ λ³€κ²½λ˜λŠ”κ²ƒ κ°™μ§€λ§Œ, λ¬Έμžμ—΄μ€ λ³€κ²½ν•  수 μ—†μœΌλ―€λ‘œ μƒˆλ‘œμš΄ λ‚΄μš©μ˜ λ¬Έμžμ—΄μ΄ μƒμ„±λœλ‹€.

 

char λ°°μ—΄ ↔ String 클래슀

 

char [ ] chArr = { 'A', 'B', 'C' };
String str = new String(chArr);   //charλ°°μ—΄ → String
char [ ] tmp = str.toCharArray(); //String → char λ°°μ—΄

 

πŸ’‘2차원 λ°°μ—΄

2차원 배열은 주둜 ν…Œμ΄λΈ” ν˜•νƒœμ˜ 데이터λ₯Ό 담을 λ•Œ μ‚¬μš©λœλ‹€.

2차원 배열은 ν–‰(row) + μ—΄ (column)둜 κ΅¬μ„±λ˜μ–΄μžˆλ‹€.

'배열이름[ν–‰index][μ—΄index]' 둜 각 μš”μ†Œμ— μ ‘κ·Όν•  수 μžˆλ‹€.

 

2차원 배열은 'λ°°μ—΄μ˜ λ°°μ—΄'둜 κ΅¬μ„±λ˜μ–΄μžˆλ‹€.

int[ ] [ ] arr = new int [ ] [ ] { {1,2,3}, {4,5,6} };  //생성과 μ΄ˆκΈ°ν™”λ₯Ό λ™μ‹œ

 

βœ…2차원 λ°°μ—΄μ˜ 좜λ ₯

첫번째 for문은 ν–‰(row)λ₯Ό 탐색

내뢀에 μžˆλŠ” λ‘λ²ˆμ§Έ for문은 μ—΄(column)을 탐색

// 2x3 2차원 λ°°μ—΄ 생성.
int[][] arr = new int[2][3]; //ν–‰(row), μ—΄(column)

int[][] arr = {
	{1, 2, 3},
	{4, 5, 6} 
};

for (int row = 0; row < arr.length; row++) {
	for (int col = 0; col < arr[row].length; col++) {
		System.out.print(arr[row][col] + " ");
	}
	System.out.println();
}