Day 09(21.09.13) - Gomserker/Java-101 GitHub Wiki
10. μ°Έμ‘° νμ
1. λ©λͺ¨λ¦¬ μ¬μ© μμ
(1) Method μμ
Method μμμλ μ½λμμ μ¬μ©λλ 'Class'λ€μ ν΄λμ€ λ‘λλ‘ μ½μ΄λ€μ¬, field λ°μ΄ν°, method λ°μ΄ν°, method μ½λ, constructor μ½λ λ±μ λΆλ₯νμ¬ μ μ₯νλ€.
(2) Heap μμ
κ°μ²΄μ λ°°μ΄μ΄ μμ±λλ μμμ΄λ€. Heap μμμ μμ±λ κ°μ²΄μ λ°°μ΄μ Stack μμμ λ³μλ λ€λ₯Έ κ°μ²΄μ νλμμ μ°Έμ‘°νλ€.
μ°Έμ‘°νλ λ³μλ fieldκ° μλ€λ©΄ JVMμ GCλ₯Ό μ€νμμΌ μλμΌλ‘ Heap μμμμ μ κ±°νλ€.
CμΈμ΄ κ³μ΄μμλ μ΄λ° μλ―Έ μλ κ°μ²΄λ₯Ό μμ ν λ ν¬μΈν°λΌλ κ±Έ λ°λ‘ μ¬μ©ν΄μΌ νλ€κ³ νλ€.
(3) Stack μμ
κ° Thread λ§λ€ νλμ© μ‘΄μ¬νλ©° μμλ λ ν λΉλλ€.
Stackμ Methodλ₯Ό νΈμΆν λλ§λ€ Frameμ μΆκ°(Push)νκ³ , λ©μλκ° μ’
λ£λλ©΄ ν΄λΉ Frameμ μ κ±°(Pop)νλ λμμ μννλ€.
νλ μ λ΄λΆμλ λ‘컬 λ³μ Stackμ΄ μλλ°, κΈ°λ³Έ νμ
(int, double λ±) λ³μμ μ°Έμ‘° νμ
λ³μκ° Pushλκ±°λ Popλλ€.
λ³μμ μ΄κΈ° κ°μ μ μ₯ν λ(μ΄κΈ°ν) μ΄ μμμ λ³μκ° μμ±λλλ°, μ μΈλ λΈλ‘ μμμλ§ Stackμ μ‘΄μ¬νκ³ μ΄λ₯Ό λ²μ΄λλ©΄ Popλλ€.
2. λ°°μ΄
λ°°μ΄μ΄λ?
νλμ λ³μλ νλμ λ°μ΄ν°λ§ μ μ₯ν μ μλ€. μ΄ λ§μ, λ°μ΄ν°μ μκ° λ§μμ§λ©΄ νμ°μ μΌλ‘ νμν λ³μμ μκ° μ¦κ°νλ€λ μκΈ°λ€. μλ₯Ό λ€μ΄, νμμ μ±μ μ΄λ μ¬μμ 근무 νκ°λ₯Ό κΈ°λ‘νλ€κ³ ν λ, μμ μΈμμ κ²½μ° νμ 1, λλ μ¬μ 1 μ λ³μλ₯Ό λ°λ‘λ°λ‘ μμ±νλ€, μ λΆ κ°λ³λ‘ κ΄λ¦¬ν μ μλ€. νμ§λ§, νκ΅ μ 체 λ¨μλ μ μ¬ μ°¨μμ κ΄λ¦¬κ° νμν κ²½μ°μλ κ°λ³ μΈμμ λν λ³μλ₯Ό λ°λ‘ μμ±νλ κ²μ νμ€μ μΌλ‘ 무리μ κ°κΉλ€. μ΄μ μ΄λ νκ· λ±, λ΄λΆ λ°μ΄ν°λ₯Ό νμ©ν μμ
μ μνν κ²½μ°μλ λ§ν κ²λ μλ€.
μ΄λ¬ν μμ
μ ν¨μ¨μ μΌλ‘ μνν μ μκ² λμμ£Όλ κ²μ΄ λ°λ‘ λ°°μ΄μ΄λ€. λ°°μ΄μ κ°μ νμ
μ λ°μ΄ν°λ₯Ό μ°μλ 곡κ°μ λμ΄μν€κ³ , κ° ν
μ΄ν°μ Indexλ₯Ό λΆμ¬ν΄ λμ μλ£κ΅¬μ‘°μ΄λ€. μ΄λ₯Ό μ΄ν΄νκΈ° μ½κ² μ€λͺ
νμλ©΄,
νμ 1λ² : κΉμ² μ
νμ 2λ² : κΉμν¬
νμ 3λ² : κΆλ―Όμ
...
μμ κ°μ΄ νμ λͺ λ²μ΄λΌλ Indexμ νμμ μ΄λ¦μ μ μ₯νλ μλ£κ΅¬μ‘°λΌλ κ²μ΄λ€.
μ€μν μ μ λ°°μ΄μ indexλ 1μ΄ μλλΌ 0 λΆν° μμλλ€.
μλλ νμ 30λͺ
μ νκ· μ μλ₯Ό μΆλ ₯νλ νλ‘κ·Έλ¨μ λ§λ λ€κ³ κ°μ νμ λμ μ½λμ΄λ€.
int sum = 0;
for(int i=0; i < 30; i++ {
sum += score[i];
}
int avg = sum / 30;
μ μ½λμ forλ¬Έμ 0λΆν° 29κΉμ§ 30κ°μ indexμ dataλ₯Ό μ λΆ λν κ°μ sumμΌλ‘ λ°ννλ€.
κ·Έλ κ² λ°νλ sumμ 30μΌλ‘ λλμ΄ νκ· avgλ₯Ό μ»κ²λλλ°, μ΄λ κ² νλ©΄ 30λͺ
μ΄ μλλΌ μ μ²λͺ
μ νκ· μ ꡬν λλ forλ¬Έμ μ«μλ§ μμ νλ©΄ λλ―λ‘ μμ² ν¨μ¨μ μΈ μλ£κ΅¬μ‘°λΌν μ μλ€.
λ°°μ΄μ νΉμ§
- λ°°μ΄μ κ°μ νμ
μ λ°μ΄ν°λ§ μ μ₯ν μ μλ€.
int λ°°μ΄μ int κ°λ§ μ μ₯ν μ μκ³ , String λ°°μ΄μ Stringλ§ μ μ₯ν μ μλ€. λ§μ½ λ€λ₯Έ νμ μ κ°μ μ μ₯νλ €κ³ νλ©΄ Type mismatchλ‘ μ»΄νμΌ μλ¬κ° λ°μνλ€.
λ°°μ΄μ νμ μ λ°°μ΄μ΄ μ μΈλ¨κ³Ό λμμ κ²°μ λλλ° μ΄λ μλμμ νμΈν μ μλ€. - λ°°μ΄μ indexλ 0λΆν° μμμ΄λ€.
μμμμ μΈκΈνμ§λ§ λ°°μ΄μ indexλ 1μ΄ μλ μλμ κ°μ΄ 0λΆν° μμλλ€.
data 1 2 3 4 5
index [0] [1] [2] [3] [4]
-
ν λ² μμ±λ λ°°μ΄μ κΈΈμ΄λ₯Ό λ³κ²½ν μ μλ€.
3κ°μ κ°μ μ μ₯νλ λ°°μ΄μ μμ±νλ©΄ λμ€μ 5κ°μ κ°μ μ μ₯νλ λ°°μ΄λ‘ μμ ν μ μκ³ , κ·Έ λ°λλ λ§μ°¬κ°μ§λ€.
λ§μ½ 5κ°μ κ°μ μ μ₯ν΄μΌν κ²½μ°, κΈΈμ΄ 5μ μλ‘μ΄ λ°°μ΄μ μμ±νκ³ κΈ°μ‘΄ νλͺ©μ μλ‘ μμ±ν λ°°μ΄λ‘ 볡μ¬ν΄μΌ νλ€. -
λ°°μ΄ λ³μλ μ°Έμ‘° λ³μμ μνλ€.
λ°°μ΄λ κ°μ²΄μ΄λ―λ‘ Heap μμμ μμ±λκ³ , λ°°μ΄ λ³μλ Heap μμ΅μ λ°°μ΄ κ°μ²΄λ₯Ό μ°Έμ‘°νκ² λλ€. μ¬κΈ°μ μ°Έμ‘°ν λ°°μ΄ κ°μ²΄κ° μλ€λ©΄ λ°°μ΄ λ³μλ null κ°μΌλ‘ μ΄κΈ°νλ μ μλ€.
3. λ°°μ΄μ μ μΈ
λ°°μ΄μ μ¬μ©νκΈ° μν΄μλ λ°°μ΄ λ³μλ₯Ό μ μΈν΄μΌ νλ€. λ κ°μ§ λ°©λ²μ΄ μλλ°,
νμ
[] λ³μ; νμ
λ³μ[]
int[] intArray; int intArray[];
double[] doubleArray; double double[];
String[] strArray; Strubg strArray[];
μμ κ°μ΄ λ°°μ΄μ μ μΈν μ μλ€.
1. λ°°μ΄μ κ°μ μκ³ μμλ κ° λͺ©λ‘μΌλ‘ λ°°μ΄μ μμ±νλ λ²
λ°°μ΄ νλͺ©μ μ μ₯λ valueμ listκ° μλ€λ©΄ λ€μκ³Ό κ°μ΄ κ°λ¨νκ² λ°°μ΄ κ°μ²΄λ₯Ό λ§λ€ μ μλ€.
λ°μ΄ν°νμ
[] λ³μ = {value0, value1, value2, value3, ...
int[] scores = {83, 90, 87}
μμ κ°μ κ²½μ°, scoresλΌλ λ³μμ 83, 90 , 87μ κ°μ΄ μ μ₯λλ κΈΈμ΄ 3μ λ°°μ΄μ΄ μλμΌλ‘ μμ±λλ€.
λ°°μ΄μ΄ λ¨Όμ μμ±λκ³ value listκ° λμ€μ κ²°μ λλ μν©μ΄λΌλ©΄ λ€μμ λ°©λ²μ μ¬μ©νλ©΄ λλ€.
2. new μ°μ°μλ‘ λ°°μ΄ μμ±
value listλ μμ§λ§, λμ€μ valueλ₯Ό μ μ₯ν λ°°μ΄μ 미리 λ§λ€κ³ μΆλ€λ©΄ new μ°μ°μλ₯Ό μ¬μ©ν΄ λ°°μ΄ κ°μ²΄λ₯Ό λ§λ€ μ μλ€.
νμ
[] λ³μ = new νμ
[κΈΈμ΄];
int[] intArray = new int[5];
μμ κ²½μ°μ κΈΈμ΄κ° 5μΈ λ°°μ΄, intArrayκ° μμ±λλ€. μ¬κΈ°μ κΈΈμ΄λ, λ°°μ΄μ΄ μ μ₯ν μ μλ κ°μ μλ₯Ό λ§νλ€.
μμμ λ§νλ―μ΄ λμ€μ valueλ₯Ό μ μ₯ν λ new μ°μ°μλ₯Ό μ¬μ©ν΄ λ°°μ΄μ μμ±νλλ°, μ΄λ λ°°μ΄μ valueλ 0μΌλ‘ μ΄κΈ°νλλ€.
μ΄λ κ² μμ±λ λ°°μ΄μ valueλ₯Ό μ μ₯νλ €λ©΄ λμ
μ°μ°μλ₯Ό μ¬μ©νλ©΄λλ€.
λ³μ[index] = value;
intArray[0] = 1;
μμ κ²½μ°μ μμ±ν΄λ intArrayμ 0λ² μΈλ±μ€, μ¦ μ²«λ²μ§Έ μμΉμ 1μ΄λΌλ valueλ₯Ό μ μ₯νλ€λ λ»μ΄ λλ€.
3. λ°°μ΄μ κΈΈμ΄
λ°°μ΄μ κΈΈμ΄λ λ°°μ΄μ μ μ₯ν μ μλ νλͺ© μλ₯Ό λ§νλ€. μ½λμμ λ°°μ΄μ κΈΈμ΄λ₯Ό μ»μΌλ €λ©΄ λ°°μ΄ κ°μ²΄μ length fieldλ₯Ό μ½μΌλ©΄ λλ€.
λ°°μ΄μ length fieldλ₯Ό μ½μΌλ €λ©΄ λ°°μ΄ λ³μμ '.' μ°μ°μλ₯Ό λΆμ΄κ³ lengthλ₯Ό μ μ΄μ£Όλ©΄ λλ€.
int[] intArray = {10, 20, 30};
int num = intArray.length;
System.out.println(num);
// intArray.length = 10; β μλ¬ λ°μ
μμ κ°μ΄ μ¬μ©ν μ μλλ° μ΄λ, length fieldλ μ½κΈ° μ μ©μ΄κΈ° λλ¬Έμ κ°μ λ°κΏ μκ° μλ€. λλ¬Έμ μ μλ¬ λ°μ νκ³Ό κ°μ΄ μμ±νλ©΄ μλ¬κ° λ°μνλ€.
μλλ νμ 5λͺ
μ μμ΄ μ μμ κ΅μ΄ μ μλ₯Ό λ°°μ΄λ‘ νμ©ν λμ μμμ΄λ€.
public class Score {
public static void main(String[] args) {
//νμ 5λͺ
μΌλ‘ μμ΄ μ μμ κ°μ λͺ¨λ₯Όλ
int[] engScore = new int [5];
//engScore λ°°μ΄μ κ° indexμ value μ μ₯
engScore[0] = 100;
engScore[1] = 90;
engScore[2] = 80;
engScore[3] = 70;
engScore[4] = 60;
//νμ 5λͺ
μ κ΅μ΄ μν μ μμ κ°μ μκ³ μμλ
//λ°°μ΄μ μ μΈκ³Ό λμμ koreanScore λ°°μ΄μ κ° indexλ₯Ό μ΄κΈ°νν μ μλ€.
int[] koreanScore = {80, 70, 60, 50, 40};
//μΈλ²μ§Έ νμμ μμ΄ μ μλ?
System.out.println(engScore[2]);
//κ΅μ΄ μ μμ μ΄ν©μ?
int krTotal = 0;
for (int i = 0; i < koreanScore.length; i++) {
krTotal += koreanScore[i];
}
System.out.printf("κ΅μ΄ μ μμ μ΄ν©μ %dμ ", krTotal);
}
}
4. λ€μ°¨μ λ°°μ΄
κ°λ€μ΄ νκ³Ό μ΄λ‘ ꡬμ±λ λ°°μ΄μ 2μ°¨μ λ°°μ΄μ΄λΌκ³ νλ€. κ³ λ±νκ΅μμ λ°°μ°λ νλ ¬μ μκ°νλ©΄ λλ€.
μ΄ κ²½μ°μλ κ°λ‘ indexμ μΈλ‘ indexλ₯Ό μ¬μ©νλλ°, μλ°μμλ μ€μ²© λ°°μ΄ λ°©μμΌλ‘ ꡬννλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°λ€.
int[][] scores = new int [2][3] // 2ν 3μ΄ κ΅¬μ‘°μ 2μ°¨μ λ°°μ΄ μμ±
μ΄ μ½λλ λ©λͺ¨λ¦¬ μμ μ€μμλ heap μμ(λ°°μ΄μ μ°Έμ‘° λ³μμ΄λ―λ‘)μ λ°°μ΄ κ°μ²΄κ° μΈ κ° μμ±λλ€. νΈμμ A, B, CλΌκ³ λΆλ₯΄κ² λ€.
λ°°μ΄ λ³μμΈ scoresλ λ¨Όμ lengthκ° 2μΈ λ°°μ΄ Aλ₯Ό λ¨Όμ μ°Έμ‘°νλλ°, μ¬κΈ°μ scores[0]μ λ€μ lengthκ° 3μΈ λ°°μ΄ Bλ₯Ό μ°Έμ‘°νλ€. κ·Έλ¦¬κ³ scores[1] λν lengthκ° 3μΈ λ°°μ΄ Cλ₯Ό μ°Έμ‘°νλ λ°©μμΌλ‘ λ€μ°¨μ λ°°μ΄μ΄ μλνκ² λλ€.
λ€μ°¨μ λ°°μ΄ λν λ°°μ΄κ³Ό λ§μ°¬κ°μ§λ‘ value listλ₯Ό κ°μ§κ³ μλ μλμ λ°λΌ λ€μνκ² μμ±ν μ μλλ°, value listκ° μμλλ
νμ
[][] λ³μ = { {value0a, value0b, value0c ...}, {value1a, value1b, value1c} };
μμ κ°μ΄ μμ±ν μ μλ€. μ¬μ© μμλ μλμ κ°λ€.
int[][] scores = { {95, 80}, {92, 96} };
//μ scores λ°°μ΄μμ νλͺ©κ° λΆλ¬μ€κΈ°
int score = scores[0][0]; //μΆλ ₯ κ°: 95
int score = scores[1][1]; //μΆλ ₯ κ°: 96
μ μμλ₯Ό ν΅ν΄ scores λ°°μ΄μ
0μ΄ 1μ΄
0ν 95 80
1ν 92 96
μ΄μ κ°μ 2*2 ννμ λ°°μ΄λ‘ μμ±λμλ€λ κ²μ μ μ μλ€.