-
Live Study - Java μ ClassHello, World π»/Java βοΈ 2020. 12. 14. 20:37
μ 리ν λ΄μ©
- ν΄λμ€λ₯Ό μ μνλ λ°©λ²
- κ°μ²΄λ₯Ό λ§λλ λ°©λ², new μ°μ°μ μ΄ν΄νκΈ°
- λ³μ μ μΈνκΈ°
- λ©μλ μ μΈνκΈ°
- μμ±μ μ μνκΈ°
- this ν€μλ μ΄ν΄νκΈ°
Class, ν΄λμ€λ κ°μ²΄λ₯Ό μ μν΄ λμ κ²μ΄κ³ , μ¬μ©μ μ μ νμ (User-Defined Type)μ΄λ€.
μΈμ΄μμ μ 곡νλ μλ£ν(primitive type) μΈμ κ°λ°μκ° μλ‘ κ΄λ ¨λ λ³μλ€μ λ¬Άμ΄μ νλμ νμ μΌλ‘ μλ‘ μΆκ°νλ κ²μ μ¬μ©μ μ μ νμ μ΄λΌκ³ νλ€.μ¬κΈ°μ 'κ°μ²΄'λ 무μμΈμ§, κ°μ²΄μ§ν₯μ 무μμΈμ§.. μ λν λ΄μ©μ μ°κ²λλ©΄ κΈλ νμμ΄ κΈΈμ΄μ§κ³ μ 리λ νλ€ κ² κ°μμ λ¨μν νλ‘κ·Έλλ°μ μΈ κ΄μ μμ μ 리ν΄λ³΄λ €κ³ νλ€.
λμ΄κ°κΈ° μ μ νλ‘κ·Έλλ°μμ λ°μ΄ν° μ²λ¦¬λ₯Ό μν μ μ₯ ννμ λ°μ κ³Όμ μ μ§μ΄λ³΄λ©΄ λ€μκ³Ό κ°λ€.
λ³μ -> λ°°μ΄ -> ꡬ쑰체 -> ν΄λμ€
λ³μ: νλμ λ°μ΄ν°λ₯Ό μ μ₯ν μ μλ 곡κ°
λ°°μ΄: κ°μ νμ μ μ¬λ¬ λ°μ΄ν°λ₯Ό νλμ μ§ν©μΌλ‘ μ μ₯ν μ μλ 곡κ°
ꡬ쑰체: κ΄λ ¨λ μ¬λ¬ λ°μ΄ν°λ₯Ό μ’ λ₯μ κ΄κ³μμ΄ νλμ μ§ν©μΌλ‘ μ μ₯ν μ μλ 곡κ°
ν΄λμ€: κ΄λ ¨λ μ¬λ¬ λ°μ΄ν°μ ν¨μμ κ²°ν©, ꡬ쑰체μ ν¨μλ₯Ό ν©μΉ κ²κ³Ό κ°λ€.νλ‘κ·Έλλ° μΈμ΄μμλ μ¬μ©μ μ μ νμ μ μ μν μ μλ λ°©λ²μ μ 곡νκ³ μκ³ , Java μ κ°μ κ°μ²΄μ§ν₯μΈμ΄μμλ ν΄λμ€κ° μ¬μ©μ μ μ νμ μ΄λ€.
ν΄λμ€λ₯Ό μ μνλ λ°©λ²μ μ΄λ λ€.
1. ν΄λμ€λͺ .java νμΌμ μ μ ν ν¨ν€μ§(λλ ν 리)μ λ§λ λ€.
Java μΈμ΄μμ μ¬μ©νλ μ½λ 컨벀μ μ΄ μλ€. λ§μ λ΄μ©μ΄ μκ³ , ν΄λμ€ λͺ μ λν λ΄μ©λ μλ€.
google.github.io/styleguide/javaguide.html#s5.2.2-class-names λ₯Ό μ°Έκ³ ν΄λ³΄λ©΄ ν΄λμ€λͺ μ λͺ μ¬ λλ λͺ μ¬κ΅¬μ΄μ΄μΌ νκ³ , UppserCamelCase 컨벀μ μ λ°λ₯Έλ€. (λλ¬Έμλ‘ μμν΄ λ¨μ΄κ° λ°λ λ λλ¬Έμλ‘ μλ κ²) λ€λ§ κΌ λͺ μ¬μΌ νμλ μκ³ νμ©μ¬κ΅¬κ° μ¬ μλ μλ€κ³ νλ€. Readable κ°μ ν΄λμ€ λͺ λ μλ€. κΌ λͺ μ¬κ΅¬λΌκ³ μ ν΄μ§ 건 μλ κ² κ°λ€.
Test ν΄λμ€ κ°μ κ²½μ°λ λμ ν΄λμ€λͺ λ€μ Test λ₯Ό λΆμ΄λ©΄ λλ€. μλ MyClass λ₯Ό ν μ€νΈ νλ ν μ€νΈ ν΄λμ€λͺ μ MyClassTest λ‘ νλ©΄ λλ€.2. νμΌμ λ§λ€λ©΄ κΈ°λ³Έμ μΌλ‘ IDE, νΈμ§κΈ°μμ ν΄λμ€ μ½λλ₯Ό μμ±ν΄μ€λ€. νμΌλͺ κ³Ό ν΄λμ€λͺ μ κ°μμΌ νλ€. μλ νμΌλͺ μ MyClass.java μ΄λ€. ν΄λμ€λͺ μ λ°κΎΈλ©΄ μ»΄νμΌλ¬κ° μλ¬κ° μλ€κ³ μλ €μ€ κ²μ΄λ€.
public class MyClass { // λ³μ.. // λ©μλ.. }
(package λͺ μ μλ΅νλ€.)
3. λ
ν΄λμ€λΌλ λΌλλ₯Ό λ§λ€κ³ μ μνλ κ² μ체λ μ΄μ λλ‘ μ½λ€. μ¬κΈ°μ μ΄μ public μ΄ protected, private μ΄ λ μλ μκ³ ν΄λμ€ μ΄λ¦ μμ implements, extends κ° μ¬ μλ μλ€. λ³μμ λ©μλλ μμ± ν΄μΌνλ€. μ΄μ λΆμ΄λ©΄μ 곡λΆν΄λ³΄μ.
νλμ .java νμΌμ μ¬λ¬ ν΄λμ€λ₯Ό μ μν μ μμ§λ§ λλλ‘ ν νμΌμ νλμ ν΄λμ€λ₯Ό μμ±νλ κ²μ΄ μ’λ€.
(μ°Έκ³ : ν΄λμ€μ public, default μ΄ λ κ°μ§ μ κ·Ό μ νμλ₯Ό μ μ©ν μ μκ³ , νμΌλͺ κ³Ό κ°μ ν΄λμ€μλ§ public μ μ μ©μν¬ μ μλ€)κ°μ²΄λ₯Ό λ§λλ λ°©λ², new ν€μλ μ΄ν΄νκΈ°
ν΄λμ€λ₯Ό μ μνλ λ°©λ²μ μμλ€. ν΄λμ€λ₯Ό λ§λλ λ°©λ²μ new λΌλ μ°μ°μλ₯Ό μ¬μ©νλ κ²μ΄λ€.
κ·Έλμμ new μ°μ°μλ λ§ κ·Έλλ‘ 'κ·Έλ₯' μ°κ³ μμλ€. κΉμ κ³ λ―Ό μμ΄. μ¨λΌμΈ μ€ν°λλ₯Ό κΈ°νλ‘ μ 리ν΄λ³΄κ² λμλ€.μΈμ€ν΄μ€ν(Instantiation) λΌλ κ²μ μμμΌ ν κ² κ°λ€. ν΄λμ€λ₯Ό κ°μ²΄λ₯Ό μ μν΄ λμ κ² μ΄λΌκ³ νλλ°, ν΄λμ€λ‘λΆν° κ°μ²΄λ₯Ό λ§λλ κ³Όμ μ μΈμ€ν΄μ€ν νλ€κ³ νλ€. κ·Έλ¦¬κ³ ν΄λμ€λ‘λΆν° λ§λ€μ΄μ§ κ°μ²΄λ₯Ό κ·Έ ν΄λμ€μ μΈμ€ν΄μ€(instance) λΌκ³ νλ€.
κ°μ²΄λ₯Ό λ§λλ λ°©λ²μ 2λ¨κ³λ₯Ό κ±°μ³μΌ νλ€.
- μ μΈ (Declaration)
- μΈμ€ν΄μ€ν
1. μ μΈ λ¨κ³μμλ μ°λ¦¬κ° μ μν ν΄λμ€λ₯Ό νμ μΌλ‘ κ°μ§λ λ³μλ₯Ό μ μΈνλ κ²μ΄λ€.
MyClass myClass;
μ¬κΈ°μ myClass λ κ°μ²΄λ₯Ό λ΄κ³ μλ λ³μκ° μλκ³ κ°μ²΄λ₯Ό μ°Έμ‘°ν μ μλ μ°Έμ‘° λ³μμ΄λ€.
2. μΈμ€ν΄μ€ λ¨κ³μμ μ΄μ new μ°μ°μκ° λ±μ₯νλ€.
myClass = new MyClass(); MyClass myClass = new MyClass(); // νμ€λ‘ μμ±ν΄λ λλ€.
new μ°μ°μλ λ°νμ(μ€νμμ )μ μλ‘μ΄ κ°μ²΄μ λν λ©λͺ¨λ¦¬λ₯Ό ν(Heap) μμμ λμ μΌλ‘ ν λΉνκ³ , ν΄λΉ λ©λͺ¨λ¦¬μ λν μ°Έμ‘°(μ£Όμκ°)λ₯Ό λ°νν΄μ ν΄λμ€λ₯Ό μΈμ€ν΄μ€ν νλ κ²μ΄λ€.
μ΄μ myClass λ³μλ‘ ν μμμ ν λΉλ MyClass κ°μ²΄μ μ κ·Όν μ μλ€.
λ³μ μ μΈνκΈ°
λ³μλ μΈ κ°μ§ μ’ λ₯κ° μλ€.
- ν΄λμ€ λ³μ
- μΈμ€ν΄μ€ λ³μ
- μ§μ λ³μ
λ³μκ° μ μΈλ μμΉμ λ°λΌ λ³μμ μ’ λ₯κ° κ²°μ λλ€.
public class Party { static int limit; // ν΄λμ€ λ³μ String subject; // μΈμ€ν΄μ€ λ³μ void open() { int time = 8; // μ§μ λ³μ } }
μΈμ€ν΄μ€ λ³μ
ν΄λμ€ μμμ μ μΈλκ³ , ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν λ λ§λ€μ΄μ§λ€. κ·Έλμ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νκΈ° μν΄μλ λ¨Όμ μΈμ€ν΄μ€λ₯Ό μμ±ν΄μΌνλ€.
μΈμ€ν΄μ€λ Heap μμμ κ°κ° μμ±λκΈ° λλ¬Έμ μ¬λ¬ μΈμ€ν΄μ€λ κ³ μ ν μΈμ€ν΄μ€ λ³μλ₯Ό κ°μ§λ€.Party party = new Party(); System.out.println(party.subject);
- μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νκΈ° μν΄μ λ¨Όμ μμ±ν΄μΌ νλ€.ν΄λμ€ λ³μ, static λ³μ
ν΄λμ€ λ³μλ μΈμ€ν΄μ€ λ³μ μμ static ν€μλλ₯Ό λΆμ΄λ©΄ λλ€. κ·Έλμ static λ³μλΌκ³ λ νλ€. ν΄λμ€ λ³μλ ν΄λμ€κ° λ©λͺ¨λ¦¬μ μ¬λΌκ° λ μμ±μ΄ λλ€.
JVM μ΄ .class νμΌμ μ½μ΄μ ν΄λμ€μ λν μ 보λ₯Ό Method Area λΌλ κ³³μ μ μ₯νλλ°, μ΄ λ ν΄λμ€ λ³μλ μ΄ μμμ μ μ₯λλ€. κ·Έλμ μΈμ€ν΄μ€μμ static λ³μλ₯Ό μ°Έμ‘°ν λ μ΄ μμμ μ°Ύκ² λκ³ , λͺ¨λ μΈμ€ν΄μ€λ ν΄λμ€ λ³μλ₯Ό 곡μ ν΄μ μ¬μ©νκ² λλ€.System.out.println(Party.limit);
- ν΄λμ€ λ³μλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ© κ°λ₯νλ€. ν΄λμ€ μ΄λ¦μΌλ‘ μ κ·Όν μ μλ€.μ§μλ³μ
λ©μλ, μμ±μ, μ΄κΈ°ν λΈλμ μ μΈν λ³μλ λͺ¨λ μ§μλ³μμ΄λ€. λ©μλ λΈλ, μμ±μ λΈλ, μ΄κΈ°ν λΈλ { } λ΄μμλ§ μ¬μ©λκ³ λΈλμ΄ λλλ©΄ μλ©Έλλ€.
λ©μλ μ μΈνκΈ°
λ©μλλ μ μΈλΆ, ꡬνλΆλ‘ μ΄λ£¨μ΄μ Έ μλ€.
λ°ννμ λ©μλ_μ΄λ¦(맀κ°λ³μ1, 맀κ°λ³μ2..) { // μ μΈλΆ // ꡬνλΆ }
int add(int x, int y) { return x + y; }
λ°ννμ - λ©μλμ μΆλ ₯ κ²°κ³Όμ μλ£νμ μμ±νλ©΄ λλ€. λ°νκ°μ΄ μλ κ²½μ°λ void λΌκ³ μμ±νλ©΄ λλ€.
λ©μλ μ΄λ¦ - λ©μλκ° μ΄λ€ μΌμ νλμ§ μ΄λ¦μ μ μ ν΄μ μμ±νλ©΄ λλ€. (μ΄λ¦μ μ μ νλ 건 μ΄λ €μ΄ μΌμ΄λ€..) λ©μλ μ΄λ¦μ lowCamelCase κ·μΉμ λ°λ₯Έλ€.
맀κ°λ³μ - 'μλ£ν λ³μλͺ ' μ§μ μ§μ΄ μμ±νλ©΄ λλ€. κ° λ§€κ°λ³μλ μΌν ',' λ‘ μ°κ²°νλ©΄ λλ€. μλ£νμ΄λ λ³μλͺ μ μλ΅ν μ μλ€. λ§μ½ 맀κ°λ³μκ° νμ μλ€λ©΄ int add() μ΄λ κ² λΉμλλ©΄ λλ€.
κΈ°λ³Έν 맀κ°λ³μ - 맀κ°λ³μκ° μμ νμ (primitive type) μΈ κ²½μ° κΈ°λ³Έν κ°μ΄ 볡μ¬λμ λ©μλ λ΄λΆμμ μ¬μ©λλ€. λ©μλ λ΄λΆμμ κΈ°λ³Έν 맀κ°λ³μμ κ°μ λ³κ²½ν΄λ λ©μλλ₯Ό νΈμΆν μͺ½μμμ μλ³Έμ λ³λμ΄ μλ€.
μ°Έμ‘°ν 맀κ°λ³μ - 맀κ°λ³μκ° μ°Έμ‘°νμΌ κ²½μ° μΈμ€ν΄μ€μ μ£Όμ κ°μ΄ 볡μ¬λμ λ©μλ λ΄λΆμμ μ¬μ©λλ€. λ©μλ λ΄λΆμμ μ°Έμ‘°ν 맀κ°λ³μμ κ°μ λ³κ²½νλ©΄ λ©μλλ₯Ό νΈμΆν μͺ½μ μλ³Έλ λ³κ²½λλ€.public class ParameterSample { public static void main(String[] args) { ParameterSample sample = new ParameterSample(); int x = 1000; System.out.println("νΈμΆ μ : " + x); sample.changeAndDisplay(x); System.out.println("νΈμΆ ν: " + x); } void changeAndDisplay(int x) { x = 2000; System.out.println("Method λ΄λΆ: " + x); } } // μΆλ ₯ κ²°κ³Ό // νΈμΆ μ : 1000 // Method λ΄λΆ: 2000 // νΈμΆ ν: 1000
μμ νμ μ 맀κ°λ³μλ₯Ό λ겨μ λ©μλ λ΄λΆμμ λ³κ²½νλ€κ³ ν΄λ μλ³Έ κ°μλ λ³λμ΄ μλ€.class Data { int x; } public class ParameterSample { public static void main(String[] args) { ParameterSample sample = new ParameterSample(); Data data = new Data(); data.x = 1000; System.out.println("νΈμΆ μ : " + data.x); sample.changeAndDisplay(data); System.out.println("νΈμΆ ν: " + data.x); } void changeAndDisplay(Data data) { data.x = 2000; System.out.println("Method λ΄λΆ: " + data.x); } } // μΆλ ₯κ²°κ³Ό // νΈμΆ μ : 1000 // Method λ΄λΆ: 2000 // νΈμΆ ν: 2000
μ°Έμ‘°ν 맀κ°λ³μλ₯Ό μ¬μ©νλ κ²½μ° μΈμ€ν΄μ€μ μ£Όμ κ°μ λκΈ΄λ€κ³ νλ€. λλ¬Έμ λ©μλ λ΄λΆμμ μ£Όμ κ°μ μ΄μ©ν΄ μΈμ€ν΄μ€ λ³μ κ°μ λ³κ²½νλ©΄, ν΄λΉ μΈμ€ν΄μ€ μ£Όμλ₯Ό μ¬μ©νλ μͺ½μμλ λΉμ°ν λ³κ²½λ μΈμ€ν΄μ€ λ³μ κ°μ μ»κ² λλ€.
return - λ©μλμ κ²°κ³Όλ₯Ό μΆλ ₯νλ keyword μ΄λ€. μ΄λ return λ€μ μμ±νλ κ°, λ³μλ μμμ μμ±ν λ°ννμ κ³Ό μλ£νμ΄ κ°μμΌ νλ€.
λ°ννμ μ μμ±ν κ²½μ° return λ¬ΈμΌλ‘ κ°μ λ°νν΄μΌ νλ€. λ°ννμ μ΄ μλ void κ²½μ° return λ¬Έμ μλ΅ν μ μλλ°, μ¬μ€ μ»΄νμΌλ¬κ° return; μ μλμΌλ‘ λΆμ¬μ€μ κ°λ₯ν κ²μ΄λ€.λ©μλμ 맀κ°λ³μλ₯Ό μ νμΈνλ κ²μ μ λ§ μ€μνλ€. 맀κ°λ³μκ° μ μ ν κ°μΌλ‘ μ λ€μ΄μλμ§ νμΈνλ μμ μ λ©μλμ μμ λΆλΆμμ νλ©΄ μ’λ€.
static λ©μλμΈμ€ν΄μ€ λ³μμ static μ λΆμ΄λ©΄ ν΄λμ€ λ³μ(static λ³μ) κ° λλ€κ³ νλ€. λ©μλμλ static μ λΆμΌ μ μλ€.
public class StaticMethod { static void show(String name) { System.out.println(name); } public static void main(String[] args) { StaticMethod.show("ohhhmycode"); } }
static λ©μλλ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μκ³ ν΄λμ€λͺ μ ν΅ν΄ μ κ·Όν΄μ λ°λ‘ μ¬μ©μ΄ κ°λ₯νλ€.
static λ©μλ λ΄λΆμμλ static λ³μλ§ μ¬μ©κ°λ₯νκ³ , μΈμ€ν΄μ€ λ³μλ μ¬μ©ν μ μλ€.
μΈμ€ν΄μ€ λ³μλ μΈμ€ν΄μ€κ° μμ±λ λ λ§λ€μ΄μ§λ€κ³ νλ€. λλ¬Έμ μΈμ€ν΄μ€λ₯Ό μμ±νμ§ μμλ μ¬μ©ν μ μλ static λ©μλλ λ©μλκ° νΈμΆλμμ λ μΈμ€ν΄μ€ λ³μκ° λ§λ€μ΄μ§μ§ μμ μνμΌ μλ μλ€.
κ·Έλμ static λ©μλμμλ μΈμ€ν΄μ€ λ³μμ μ¬μ©μ κΈμ§νκ³ μλ€.
λ°λλ‘ μΌλ° method μμλ static λ³μ, static λ©μλ λ λ€ μ°Έμ‘°νκ³ νΈμΆν μ μλ€. μΈμ€ν΄μ€ λ³μ, λ©μλκ° μλ μμ μ ν΄λμ€ λ³μ, λ©μλλ νμ€νκ² μ‘΄μ¬νλ μνμ΄κΈ° λλ¬Έμ΄λ€.
static λ©μλλ λͺ¨λ μΈμ€ν΄μ€κ° 곡ν΅μ μΌλ‘ μ¬μ©ν΄μΌν λ, λ©μλ λ΄μμ μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νμ§ μλ κ²½μ°μ static λ©μλλ‘ λ§λλ κ²μ κ³ λ €ν΄μ μ¬μ©νλ©΄ λλ€. static λ©μλλ λ©μλ νΈμΆ μκ°μ΄ 짧μμ§κΈ° λλ¬Έμ μ±λ₯ ν₯μμ μ΄μ μ΄ μλ€κ³ νλ€.μ€λ²λ‘λ©
λ©μλλ₯Ό μμ±ν λ μλ‘ κ΅¬λΆν μ μλλ‘ κ°κ° λ€λ₯Έ λ©μλλͺ μΌλ‘ λΆμ¬μ€μΌ νλ€. μλ°μμλ κ°μ μ΄λ¦μ λ©μλκ° μλλΌλ λ§€κ° λ³μμ κ°μλ νμ μ΄ λ€λ₯΄λ©΄ μλ‘ λ€λ₯΄κ² ꡬλΆν μ μλ€. μ΄λ₯Ό μ€λ²λ‘λ©μ΄λΌκ³ νλ€.
λ©μλ λͺ μ΄ κ°μλ° λ§€κ°λ³μκΉμ§ κ°λ€λ©΄ μ€λ³΅ μ€λ₯κ° λ°μνλ€. λ§€κ° λ³μλ κ°μλ° λ°ννμ μ΄ λ€λ₯΄λ€κ³ ν΄μ μ€λ²λ‘λ© λμ§λ μλλ€.
μ€λ²λ‘λ©μ λνμ μΈ μλ println λ©μλλΌκ³ νλ€.void println(); void println(int x); void println(boolean x); ...
μλμ²λΌ 맀κ°λ³μ λͺ μ΄ λ€λ₯΄λ€κ³ μ€λ²λ‘λ©μ΄ λμ§λ μλλ€.int add(int a, int b); int add(int x, int y);
κ°λ³μΈμ (varargs)
Jdk 1.5 λΆν° κ°λ³μΈμλΌλ κΈ°λ₯μ μ΄μ©ν΄ 맀κ°λ³μλ₯Ό λμ μΌλ‘ μ§μ ν΄ μ€ μ μκ² λμλ€.
'νμ ... λ³μλͺ ' μ΄λ κ² μμ±νλ©΄ λλ€. printfκ° λνμ μΈ μλΌκ³ νλ€.public PrintStream printf(String format, Object ...args) { // ... }
format μ %d, %s μ κ°μ κ²λ€μ΄ λͺ κ°λ λ±μ₯ν μ§ λͺ¨λ₯Έλ€. μ΄λ λμ μΌλ‘ 맀κ°λ³μλ₯Ό μ§μ ν μ μλ κ°λ³μΈμλ₯Ό μ¬μ©νλ©΄ μ’λ€.
μ μ²λΌ κ°λ³μΈμλ 맀κ°λ³μ μ€μ νμ κ°μ₯ λ§μ§λ§μ μ μΈν΄μΌ νλ€.String concat(String s1, String s2) { .. } String concat(String s1, String s2, String s3) { .. } String concat(String s1, String s2, String s3, String s4) { .. } String concat(String... str) { .. } // μ μ²λΌ 맀κ°λ³μκ° λͺ κ°κ° μ¬μ§ λͺ¨λ₯΄κ±°λ, κ°μ νμμΌλ‘ 맀κ°λ³μ μ«μλ§ λμ΄λ λ κ°λ³μΈμλ₯Ό μ¬μ©νλ©΄ λλ€. // κ°λ³μΈμ λ©μλ νΈμΆ concat(); // 맀κ°λ³μλ₯Ό λκΈ°μ§ μμλ λλ€. concat("a", "b"); concat("a", "b", "c"); concat(new String[] { "a", "b", "c", "d" }); // λ°°μ΄λ κ°λ₯νλ€.
κ°λ³μΈμλ λ΄λΆμ μΌλ‘ λ°°μ΄μ μ΄μ©νλ€. κ°λ³μΈμκ° μ μΈλ λ©μλλ₯Ό νΈμΆν λλ§λ€ λ°°μ΄μ΄ μλ‘ μμ±λλ€κ³ νλ€. λ§€λ² λ°°μ΄μ μμ±νκΈ° λλ¬Έμ λΉν¨μ¨μ μΌ μ μκΈ° λλ¬Έμ νμν λ μ μ¬μ©ν΄μΌ λ κ² κ°λ€.
λ©μλ λ΄λΆμμλ μλ μ²λΌ μ¬μ©νλ©΄ λλ€.String concat(String... str) { for (String s : str) { // do something.. } }
μ£Όμν κ²μ΄ μλ€.String concat(String delim, String... str); String concat(String... str);
μμ μ€λ²λ‘λ©μ μ€λ³΅ μλ¬κ° λ°μνλ€. μμ²λΌ μμ±λμ΄ μλ€κ³ κ°μ νκ³ νΈμΆν λλ λ€μκ³Ό κ°μ κ²μ΄λ€.
concat("a", "b", "c");
concat("-", "b", "c");
μ΄λ€κ² μμ λ©μλμΈμ§, μλ λ©μλμΈμ§ ꡬλΆν μ μλ€. κ·Έλμ μ»΄νμΌλ¬κ° Ambiguous method call μλ¬λ₯Ό μλ €μ€λ€.μμ±μ μ μνκΈ°
μμ±μλ new μ°μ°μλ‘ μΈμ€ν΄μ€λ₯Ό μμ±ν λ νΈμΆλλ μΈμ€ν΄μ€ μ΄κΈ°ν λ©μλλ€. μΈμ€ν΄μ€κ° μμ±λ λ μ€νλμ΄μΌ νλ μμ μ μν΄ μ¬μ©λκ±°λ, μΈμ€ν΄μ€ λ³μλ₯Ό μ΄κΈ°ννκΈ° μν΄ μ¬μ©λλ€.
μμ±μλ ν΄λμ€ λ΄μ μ μΈλκ³ , λ©μλ μ²λΌ μκ²Όμ§λ§ λ€λ₯Έμ μ΄ μλ€.
- μμ±μμ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό κ°λ€.
- μμ±μλ λ°ν κ°μ΄ μλ€. void λ μμ±νμ§ μλλ€.public class Party { int limit; String location; Party() { } Party(int limit, String location) { } }
μμ±μλ μ€λ²λ‘λ©μ΄ κ°λ₯νλ€.Party partyA = new Party(); Party partyB = new Party(10, "Home");
new μ°μ°μλ‘ μΈμ€ν΄μ€νν λ μ€λ₯Έμͺ½μ μμ±ν κ²μ΄ μμ±μμλ κ²μ΄λ€.κΈ°λ³Έ μμ±μ
λͺ¨λ ν΄λμ€μλ λ°λμ νλ μ΄μμ μμ±μκ° μμ΄μΌ νλ€. κΈ°λ³Έ μμ±μλ 맀κ°λ³μλ μκ³ , μ΄λ€ λ΄μ©λ μλ μμ±μμ΄λ€.
public class Party { int limit; String location; Party() { // κΈ°λ³Έ μμ±μ } }
λ€λ₯Έ μμ±μκ° μ μλμ΄ μμ§ μλ€λ©΄ μ»΄νμΌλ¬κ° κΈ°λ³Έ μμ±μλ μλμΌλ‘ μΆκ°ν΄μ€λ€.
λ§€κ° λ³μκ° μλ μμ±μλ§€κ° λ³μλ₯Ό λ°λ μμ±μλ₯Ό λ§νλ€. μΈμ€ν΄μ€λ§λ€ λ€λ₯Έ κ°μΌλ‘ μ΄κΈ°ννλ κ²½μ° λ§€κ° λ³μκ° μλ μμ±μλ₯Ό μ¬μ©νλ κ²μ΄ μ μ©ν λκ° λ§λ€.
public class Party { int limit; String location; Party() { } Party(int limit, String location) { this.limit = limit; this.location = location; } }
Party party = new Party(); party.limit = 10; party.location = "home"; Party party = new Party(10, "home"); // λ κ°κ²°νλ€.
κΈ°λ³Έ μμ±μλ₯Ό μ¬μ©ν΄ μ΄κΈ°νν΄μ£Όλ κ² λ³΄λ€ λ§€κ° λ³μλ₯Ό λ°μμ μ΄κΈ°ν ν΄μ£Όλ κ²μ΄ λ κ°κ²°νκ³ μ§κ΄μ μ΄λ€.μμ±μμμ λ€λ₯Έ μμ±μ νΈμΆ
μμ±μμμ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν μ μλ€. μ΄λλ κ·μΉμ΄ μλ€.
- λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ this() λ₯Ό μ¬μ©νλ€. this();, this(10, "home"); μ΄λ κ² μ¬μ©νλ©΄ λλ€.
- λ€λ₯Έ μμ±μλ₯Ό νΈμΆν λ 첫 μ€μμλ§ νΈμΆμ΄ κ°λ₯νλ€.public class Party { int limit; String location; Party() { } Party(int limit) { this(10, "home"); // λ€λ₯Έ μμ±μ νΈμΆ, 첫 μ€ μμ μ½λλ₯Ό μμ±νλ©΄ μλ¬ λ°μ } Party(int limit, String location) { this.limit = limit; this.location = location; } }
this ν€μλ μ΄ν΄νκΈ°
μμμ 맀κ°λ³μκ° μλ μμ±μλ₯Ό μ¬μ©ν λ λ΄λΆμμ this λΌλ ν€μλλ₯Ό μ¬μ©νλ€. this ν€μλλ₯Ό μ¬μ©νμ§ μμλ€λ©΄ μλ μ²λΌ μμ±νμ΄μΌ νλ€. μΈμ€ν΄μ€ λ³μλͺ κ³Ό ꡬλΆνκΈ° μν΄ μΈλλ° _ λ₯Ό λΆμ¬μ€¬λ€.
Party(int _limit, String _location) { limit = _limit; location = _location; }
this λ μ°Έμ‘°λ³μλ‘ μΈμ€ν΄μ€ μμ μ κ°λ¦¬ν€λ λ³μμ΄λ€. this μλ μμ μ μΈμ€ν΄μ€μ μ£Όμκ° μ μ₯λμ΄ μκ³ , λͺ¨λ μμ±μμ μΈμ€ν΄μ€ λ©μλμ μ§μλ³μλ‘ μ¨κ²¨μ§ μνλ‘ μ‘΄μ¬νλ€.
this ν€μλλ₯Ό μ¬μ©νλ©΄ 맀κ°λ³μλ‘ λ€μ΄μ¨ λ³μμ ꡬλΆν΄μ μ¬μ©ν μ μκ²λλ€. κ·Έλμ this.limit = limit; λΌκ³ μμ±ν μ μμλ κ²μ΄λ€.
static λ©μλμμλ this ν€μλλ₯Ό μ¬μ©ν μ μλ€. μΈμ€ν΄μ€ λ³μλ₯Ό μ¬μ©νμ§ λͺ»νλ μ΄μ μ λ§μ°¬κ°μ§λ‘ static λ©μλλ₯Ό μ¬μ©νλ μμ μ μΈμ€ν΄μ€κ° μμ μ μκΈ° λλ¬Έμ΄λ€.References
www.geeksforgeeks.org/new-operator-java/
google.github.io/styleguide/javaguide.html#s5.2.2-class-names
μλ°μ μ μ (www.yes24.com/Product/Goods/24259565)'Hello, World π» > Java βοΈ' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
Live Study - Java Package (0) 2020.12.30 Live Study - Java μμ (Inheritance) (0) 2020.12.23 Live Study - Java μ νλ¬Έ, λ°λ³΅λ¬Έ (0) 2020.12.06 Live Study - Java κ° μ 곡νλ λ€μν μ°μ°μ (0) 2020.11.24 Live Study - Java JVM μ λν΄ (0) 2020.11.21