π©· λ©μλμ μ’ λ₯
- μλ°μμ λ©μλλ ν¬κ² λ κ°μ§ μ£Όμ μ νμΌλ‘ λΆλ₯ν μ μμ΅λλ€. μΈμ€ν΄μ€ λ©μλμ μ μ λ©μλ.
μ΄ λ μ νμ λ©μλλ μ¬μ© λ°©μ, μ κ·Ό λ°©μ, κ·Έλ¦¬κ³ μ©λμμ μ°¨μ΄κ° μμ΅λλ€.
1. μΈμ€ν΄μ€ λ©μλ (Instance Methods)
μΈμ€ν΄μ€ λ©μλλ κ°μ²΄μ μΈμ€ν΄μ€μ μν λ©μλλ‘, κ°μ²΄μ μΈμ€ν΄μ€ λ°μ΄ν°(νλ)μ μ κ·Όνκ³ μ‘°μνλ λ° μ¬μ©λ©λλ€.
μΈμ€ν΄μ€ λ©μλλ₯Ό νΈμΆνλ €λ©΄ λ¨Όμ ν΄λΉ ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν΄μΌ ν©λλ€.
μ΄ λ©μλλ€μ ν΄λμ€μ νΉμ μΈμ€ν΄μ€μ μ’ μμ μ΄κΈ° λλ¬Έμ,
ν΄λμ€μ κ° μΈμ€ν΄μ€λ λ€λ₯Έ μΈμ€ν΄μ€μ λ©μλμ μνκ° λ€λ₯Ό μ μμ΅λλ€.
π νΉμ§
κ°μ²΄μ μν(μΈμ€ν΄μ€ λ³μ)μ μ κ·Όνκ³ λ³κ²½ν μ μμ΅λλ€.
static ν€μλ μμ΄ ν΄λμ€ λ΄λΆμ μ μλ©λλ€.
λ©μλλ₯Ό μ¬μ©νκΈ° μν΄μλ κ°μ²΄ μΈμ€ν΄μ€κ° νμν©λλ€.
public class MyNumber {
private int number; // μΈμ€ν΄μ€ λ³μ
// μΈμ€ν΄μ€ λ©μλ
public void setNumber(int number) {
this.number = number;
}
public int getNumber() {
return this.number;
}
}
// μ¬μ© μ
MyNumber myNumber = new MyNumber();
myNumber.setNumber(3); // μΈμ€ν΄μ€ λ©μλ νΈμΆ (κ° μ μ₯)
System.out.println(myNumber.getNumber()); // μΈμ€ν΄μ€ λ©μλ νΈμΆ (κ° μΆλ ₯)
// κ²°κ³Ό : 3
2. μ μ λ©μλ (Static Methods)
μ μ λ©μλλ ν΄λμ€μ μνλ©°, νΉμ μΈμ€ν΄μ€μ μ’ μλμ§ μμ΅λλ€. μ΄ λ©μλλ€μ static ν€μλλ₯Ό μ¬μ©νμ¬ μ μλλ©°,
ν΄λμ€ μ΄λ¦μ ν΅ν΄ μ§μ νΈμΆν μ μμ΅λλ€.
μ μ λ©μλλ μΈμ€ν΄μ€ λ³μμ μ§μ μ κ·Όν μ μμΌλ©°, μ€μ§ μ μ λ³μμ λ€λ₯Έ μ μ λ©μλλ§ μ κ·Όν μ μμ΅λλ€.
π‘ staticμ ν΄λμ€κ° JVMμ μν΄ μ²μ λ‘λ©λ λ μ΄κΈ°νλκ³ λ©λͺ¨λ¦¬μ ν λΉλ©λλ€.
μ΄λ λͺ¨λ ν΄λμ€μμ μ κ·Όν μ μκΈ°μ, '곡μ 'νλ μμ±μ κ°μ§κΈ°λ ν©λλ€.
π νΉμ§
μΈμ€ν΄μ€ λ³μμ μ κ·Όν μ μκ³ , μ€μ§ μ μ λ³μμλ§ μ κ·Ό κ°λ₯ν©λλ€.
ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ , ν΄λμ€ μ΄λ¦μΌλ‘ μ§μ νΈμΆν μ μμ΅λλ€.
μ νΈλ¦¬ν° ν¨μ λλ ν¬νΌ ν¨μλ₯Ό μμ±νλ λ° μμ£Ό μ¬μ©λ©λλ€.
public class mySum {
// μ μ λ©μλ
public static int sum(int a, int b) {
return a + b;
}
}
// μ¬μ© μ
int sum = mySum.sum(5, 3); // κ°μ²΄ μμ± μμ΄ ν΄λμ€ μ΄λ¦μΌλ‘ νΈμΆ
System.out.println(sum); // μΆλ ₯: 8
π©· λ©μλ μΈμ μ λ¬λ°©μ
- μλ°μ κ°μ νλ‘κ·Έλλ° μΈμ΄μμ ν¨μλ λ©μλλ₯Ό νΈμΆν λ μΈμλ₯Ό μ λ¬νλ λ°©μμ ν¬κ² μΈ κ°μ§λ‘ λλ©λλ€. Call by Value, Call by Reference, κ·Έλ¦¬κ³ Call by Name.
- κ°κ°μ λ°©μμ μ΄λ»κ² μΈμκ° ν¨μ λλ λ©μλμ μ λ¬λκ³ , κ·Έ νΈμΆμ΄ λ³μμ μ΄λ€ μν₯μ λ―ΈμΉλμ§μ λν κ·Όλ³Έμ μΈ μ°¨μ΄λ₯Ό κ°μ΅λλ€.
1. Call by Value (κ°μ μν νΈμΆ)
π
- Call by Value λ°©μμμλ ν¨μλ‘ μ λ¬λ μΈμμ 볡μ¬λ³Έμ΄ μμ±λ©λλ€.
- μ¦, ν¨μ λ΄λΆμμ μΈμμ κ°μ λ³κ²½ν΄λ μΈλΆμ λ³μμλ μν₯μ λ―ΈμΉμ§ μμ΅λλ€.
- μ΄ λ°©μμ ν¨μκ° λ 립μ μΈ μμ μ μνν λ μ μ©νλ©°, μΈλΆ λ³μλ₯Ό μ€μλ‘ λ³κ²½νλ κ²μ λ°©μ§ν μ μμ΅λλ€.
Example )
public class Test {
public static void increment(int number) {
number = number + 1;
System.out.println("Inside increment: " + number);
}
public static void main(String[] args) {
int x = 5;
increment(x);
System.out.println("After increment: " + x);
}
}
μΆλ ₯ :
Inside increment: 6
After increment: 5
2. Call by Reference (μ°Έμ‘°μ μν νΈμΆ)
π
- Call by Reference λ°©μμμλ ν¨μλ‘ μ λ¬λ μΈμμ μ°Έμ‘°(μ£Όμ)κ° μ λ¬λ©λλ€. λ°λΌμ ν¨μ λ΄μμ μΈμμ κ°μ λ³κ²½νλ©΄ νΈμΆν μͺ½μ λ³μλ μν₯μ λ°μ΅λλ€.
- μλ°λ μμν Call by Referenceλ₯Ό μ§μνμ§ μμ΅λλ€. λμ , κ°μ²΄μ μ°Έμ‘°λ₯Ό κ°μΌλ‘ μ λ¬(Call by Value of Reference)νλ λ°©μμ μ¬μ©ν©λλ€.
- μ΄κ²μ κ°μ²΄μ μ°Έμ‘°(λ©λͺ¨λ¦¬ μ£Όμμ 볡μ¬λ³Έ)κ° ν¨μλ‘ μ λ¬λλ―λ‘, ν¨μ λ΄μμ κ°μ²΄μ μνλ₯Ό λ³κ²½ν μ μμ΅λλ€.
Example )
public class Test {
public static void modify(Point point) {
point.x = 5;
System.out.println("Inside modify: " + point.x);
}
public static void main(String[] args) {
Point myPoint = new Point(1);
modify(myPoint);
System.out.println("After modify: " + myPoint.x);
}
}
class Point {
public int x;
public Point(int x) {
this.x = x;
}
}
μΆλ ₯ :
Inside modify: 5
After modify: 5
3. Call by Name
π
- Call by Nameμ ν¨μμ μΈμκ° μ€μ λ‘ μ¬μ©λ λκΉμ§ κ·Έ νκ°λ₯Ό μ§μ°μν€λ μ λ¬ λ°©μμ λλ€.
- μ΄ λ°©μμ μ£Όλ‘ μ΄κΈ°μ νλ‘κ·Έλλ° μΈμ΄λ μΌλΆ ν¨μν νλ‘κ·Έλλ° μΈμ΄μμ μ§μλ©λλ€.
- μλ°μμλ μ§μ μ μΈ Call by Name λ©μ»€λμ¦μ μ§μνμ§ μμ§λ§, λλ€ ννμμ ν΅ν΄ μ μ¬ν ν¨κ³Όλ₯Ό λΌ μ μμ΅λλ€.
Example )
public class Test {
public static void compute(Supplier<Integer> supplier) {
System.out.println("Computed value: " + supplier.get());
}
public static void main(String[] args) {
int value = 5;
compute(() -> value + 5);
}
}
μΆλ ₯ :
Computed value: 10
μμ§ μ°Έμ‘°μ μν νΈμΆμ΄λ κ°μ²΄ μμ± λ±μ λν΄ μμνμκ² μ§λ§,
μ΄λ° μ½λλ μ΄λ κ² μΆλ ₯λλꡬλλ§ μ΄ν΄ν΄μ£Όμλ©΄ λ©λλ€!
λ€μ ν¬μ€ν μμλ μ μ΄λ¬Έ, λ°λ³΅λ¬ΈμΌλ‘ μ°Ύμλ΅κ² μ΅λλ€.
'βJava' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[Java μ΄ν΄νκΈ°] 8. μλ°μ String(λ¬Έμμ΄) κΈ°μ΄ (1) (2) | 2024.05.12 |
---|---|
[Java μ΄ν΄νκΈ°] 7. μλ°μ μ μ΄λ¬Έ (2) | 2024.05.11 |
[Java μ΄ν΄νκΈ°] 5. μλ°μ ν¨μ(λ©μλ)λ? (1) (2) | 2024.05.04 |
[Java μ΄ν΄νκΈ°] 4. μλ°μ μ°μ°μ (2) | 2024.04.26 |
[Java μ΄ν΄νκΈ°] 3. μλ°μ λ°μ΄ν° νμ μ΄λ? (2) | 2024.04.26 |