๐ Chapter 05: ์ฐธ์กฐ ํ์ ๊ณผ ๋ฐฐ์ด
๐ Chapter 05: ์ฐธ์กฐ ํ์ ๊ณผ ๋ฐฐ์ด
๐น 05-1 ์ฐธ์กฐ ํ์ ๊ณผ ์ฐธ์กฐ ๋ณ์
โ ๊ธฐ๋ณธ ํ์ ๊ณผ ์ฐธ์กฐ ํ์
-
๊ธฐ๋ณธ ํ์ : ์ค์ ๊ฐ์ ๋ณ์ ์์ ์ ์ฅ
-
์ฐธ์กฐ ํ์ : ๋ฉ๋ชจ๋ฆฌ ์ฃผ์(๋ฒ์ง)๋ฅผ ๋ณ์ ์์ ์ ์ฅ
โ ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ ์์ญ
| ์์ญ | ์ค๋ช | |โโ|โโ|
| ๋ฉ์๋ ์์ญ | ํด๋์ค์ ๋ฉ์๋ ์ฝ๋, static ๋ณ์ ์ ์ฅ |
| ํ(Heap) ์์ญ | ๊ฐ์ฒด์ ๋ฐฐ์ด์ด ์์ฑ๋๋ ๊ณต๊ฐ |
| JVM ์คํ ์์ญ | ๋ฉ์๋ ํธ์ถ ์ ํ๋ ์ ์ถ๊ฐ/์ ๊ฑฐ, ์ง์ญ ๋ณ์ ์ ์ฅ |
์คํ์ ์ ์ฅ๋๋ ๊ฐ์ ์ฐจ์ด
-
๊ธฐ๋ณธ ํ์ ๋ณ์: ๋ฆฌํฐ๋ด ๊ฐ์ด ๊ทธ๋๋ก ์ ์ฅ
-
์ฐธ์กฐ ํ์ ๋ณ์: ๊ฐ์ฒด์ ์ฃผ์๊ฐ ์ ์ฅ๋จ
โ ๋ฌธ์์ด ๋น๊ต
-
==,!=: ์ฐธ์กฐ ์ฃผ์ ๋น๊ต -
.equals(): ๋ด๋ถ ๋ฌธ์์ด ๋ด์ฉ ๋น๊ต
String str1 = "hello";
String str2 = new String("hello");
System.out.println(str1 == str2); // false
System.out.println(str1.equals(str2)); // true
โ ์ฐธ์กฐ ํ์ ์ ์ด๊ธฐ๊ฐ
- ์ฐธ์กฐ ํ์
๋ณ์๋
null๋ก ์ด๊ธฐํ ๊ฐ๋ฅ
String name = null;
๐น 05-2 ๋ฐฐ์ด (Array)
โ ๋ฐฐ์ด์ด๋?
-
๊ฐ์ ํ์ ์ ๋ฐ์ดํฐ๋ฅผ ์ฐ์๋ ๊ณต๊ฐ์ ๋์ดํ ๊ตฌ์กฐ
-
๊ฐ ์์๋ ์ธ๋ฑ์ค(0๋ถํฐ ์์)๋ก ๊ตฌ๋ถ
-
์์ฑ๋ ๋ฐฐ์ด์ ๊ธธ์ด๋ ๋ณ๊ฒฝ ๋ถ๊ฐ๋ฅ
-
๋ฐฐ์ด ์์๋ฅผ ์ถ๋ ฅํ ๋ ๋ฐ๋ณต๋ฌธ ์ฌ์ฉ
๐ ์๋ฐยทC์ ๋ฐฐ์ด vs ํ์ด์ฌ์ ๋ฆฌ์คํธ ๋น๊ต
| ํน์ง | Java/C ๋ฐฐ์ด | Python ๋ฆฌ์คํธ |
|โโ|โโโโ-|โโโโโ-|
| ํ์ ๊ณ ์ | โ ์ | โ ์๋์ค |
| ํฌ๊ธฐ ๋ณ๊ฒฝ | โ ๋ถ๊ฐ | โ ๊ฐ๋ฅ |
| ์๋ฃํ ํผํฉ | โ ๋ถ๊ฐ | โ ๊ฐ๋ฅ |
โ ๋ฐฐ์ด ์ ์ธ ๋ฐฉ๋ฒ
// ๋ฐฉ๋ฒ 1
int[] numbers;
// ๋ฐฉ๋ฒ 2
int numbers[];
โ ๋ฐฐ์ด ์์ฑ ๋ฐฉ๋ฒ
- ๊ฐ ๋ชฉ๋ก ์ด์ฉ
String[] names = {"์ ์ฉ๊ถ", "ํ๊ธธ๋", "๊น์๋ฐ"};
- new ์ฐ์ฐ์ ์ด์ฉ
int[] scores = new int[5]; // 0์ผ๋ก ์ด๊ธฐํ๋จ
โ ๏ธ ์ด๋ฏธ ์ ์ธํ ๋ฐฐ์ด ๋ณ์๋ ๊ฐ ๋ชฉ๋ก๋ง์ผ๋ก ์ฌ์ด๊ธฐํํ ์ ์์ผ๋ฉฐ, new ํ์
[]{...} ํ์์ ์จ์ผ ํจ
int[] scores;
scores = new int[]{90, 80, 70};
๐ธ ๋ฐฐ์ด์ ๋งค๊ฐ๋ณ์๋ก ๋ฐ๋ ๋ฉ์๋ ์ฌ์ฉ๋ฒ
โ ๋ฉ์๋ ์ ์ธ
๋งค๊ฐ๋ณ์์๋ ๋ฐฐ์ด ์ ์ธ ๋ฐฉ๋ฒ๊ณผ ๋์ผํ๊ฒ ์ ์ด์ฃผ๊ธฐ ๋ฉ์๋ ํธ์ถํ๋ฉด์, ๋ฐฐ์ด ๊ฐ ๋ฃ์ ๋ new ์ฐ์ฐ์ ์ด์ฉํด์ ๋ฃ์ด์ฃผ๊ธฐ !!
โ ๋ฐฐ์ด ๊ธธ์ด ๋ฐ ๊ฐ ์ ๊ทผ
int[] arr = new int[3];
System.out.println(arr.length); // ๋ฐฐ์ด ๊ธธ์ด
arr[0] = 10; // ํน์ ์ธ๋ฑ์ค์ ๊ฐ ์ ์ฅ
โ ๋ฐฐ์ด vs ๋ฌธ์์ด์ length ์ฐจ์ด
int[] arr = {1, 2, 3};
System.out.println(arr.length); // ๋ฐฐ์ด: ์์ฑ
String text = "hello";
System.out.println(text.length()); // ๋ฌธ์์ด: ๋ฉ์๋
โ ๋ค์ฐจ์ ๋ฐฐ์ด
int[][] matrix = new int[2][3];
๐ ์๊ฐ์ ๊ตฌ์กฐ
scores โ
โโโโโโโโโโโโโโ
scores[0] โ [0][0] [0][1] [0][2]
scores[1] โ [1][0] [1][1] [1][2]
โโโโโโโโโโโโโโ
๐ ๋น์ ๋ฐฉํ ๋ฐฐ์ด (Jagged Array)
int[][] jagged = new int[2][];
jagged[0] = new int[2];
jagged[1] = new int[3];
โ๏ธ ๊ฐ ํ๋ง๋ค ๋ค๋ฅธ ์ด ๊ธธ์ด ๊ฐ๋ฅ
โ ๋ค์ฐจ์ ๋ฐฐ์ด ๊ฐ ๋ชฉ๋ก ์ด๊ธฐํ
int[][] matrix = {
{1, 2, 3},
{4, 5, 6}
};
โ ๋ฐฐ์ด ๋ณต์ฌ
- ๋ฐฉ๋ฒ 1: for๋ฌธ ์ด์ฉ
int[] arr1 = {1, 2, 3};
int[] arr2 = new int[arr1.length];
for (int i = 0; i < arr1.length; i++) {
arr2[i] = arr1[i];
}
- ๋ฐฉ๋ฒ 2: System.arraycopy() ์ด์ฉ
System.arraycopy(arr1, 0, arr2, 0, arr1.length);
โ ํฅ์๋ for๋ฌธ (Enhanced for loop)
for (int score : scores) {
System.out.println(score);
}
๐น 05-3 ์ด๊ฑฐ ํ์ (Enum)
โ ์ด๊ฑฐ ํ์ ์ด๋?
-
์ด๊ฑฐ ํ์ ์ ํ์ ๋ ๊ฐ๋ง ๊ฐ์ง ์ ์๋ ์๋ฃํ
-
์: ์์ผ, ๊ณ์ ๋ฑ
public enum Week {
MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY
}
๐ ์ด๊ฑฐ ํ์ ์ฌ์ฉ ์์
Week today = Week.FRIDAY;
System.out.println(today);
โ
์ด๊ฑฐ ํ์
๋ณ์๋ ์ฐธ์กฐ ํ์
์ด๋ฏ๋ก null ์ ์ฅ ๊ฐ๋ฅ
Week birthday = null;
โ Calendar ํด๋์ค์ ์ด๊ฑฐ ํ์ ์ฐ๋ ์์
import java.util.Calendar;
Week today = null;
Calendar cal = Calendar.getInstance();
int week = cal.get(Calendar.DAY_OF_WEEK);
switch (week) {
case 1: today = Week.SUNDAY; break;
case 2: today = Week.MONDAY; break;
case 3: today = Week.TUESDAY; break;
case 4: today = Week.WEDNESDAY; break;
case 5: today = Week.THURSDAY; break;
case 6: today = Week.FRIDAY; break;
case 7: today = Week.SATURDAY; break;
}
System.out.println("์ค๋ ์์ผ: " + today);
5๊ฐ ์ฐ์ต ๋ฌธ์
05_2 4๋ฒ
-
์ด๊ธฐ๊ฐ ์ค์ ์ฃผ์ int max = 0; ์ผ๋ก ์ค์ ํ๋ฉด, ๐ ๋ฐฐ์ด์ ์์๋ง ์๋ ๊ฒฝ์ฐ ์ฌ๋ฐ๋ฅธ ๊ฒฐ๊ณผ๊ฐ ๋์ค์ง ์์! ๐ง ํด๊ฒฐ: int max = Integer.MIN_VALUE;๋ก ์ค์ ํ๋ ๊ฒ ์์ ํจ.
-
๋ฐ๋ณต๋ฌธ ๋ฒ์ i < array.length ๐ ๋ฐฐ์ด ์ธ๋ฑ์ค ์ด๊ณผํ์ง ์๋๋ก ํญ์ .length ํ์ฉ!
-
continue๋ ์๋ต ๊ฐ๋ฅ if ์กฐ๊ฑด์ด false์ผ ๋ ์๋ฌด๊ฒ๋ ์ ํ๋ฉด continue ์์ด๋ ๋จ. ์ฝ๋ ๊ฐ๊ฒฐํ ๊ฐ๋ฅ!