νμ€μΈκ³ | κ°μ μΈκ³(μλ° μλ) | |
---|---|---|
μννΈμ¨μ΄ κ°λ° λꡬ | JDK(Java Development Kit) - μλ° κ°λ° λꡬ | JVMμ© μννΈμ¨μ΄ κ°λ° λꡬ |
μ΄μ체μ | JRE(Java Runtime Environment) - μλ° μ€ν νκ²½ | JVMμ© OS |
νλμ¨μ΄ - 물리μ μ»΄ν¨ν° | JVM(Java Virtual Machine) - μλ° κ°μ κΈ°κ³ | κ°μμ μ»΄ν¨ν° |
-
JDKλ₯Ό μ΄μ©ν΄ κ°λ°λ νλ‘κ·Έλ¨μ JREμ μν΄ κ°μμ μ»΄ν¨ν°μΈ JVMμμμ ꡬλλλ€.
- JDKκ° JREλ₯Ό ν¬ν¨νκ³ JREλ JVMμ ν¬ν¨νλ ννλ‘ λ°°ν¬λλ€.
- μ΄λ‘μΈν΄ κ°λ°μλ λ³ΈμΈ OSμ λ§λ JVMμ©μΌλ‘ νλ‘κ·Έλ¨μ μμ±νκ³ λ°°ν¬νλ©΄ JVMμ΄ μ€μ¬μλ‘μ κ° OSμμ ꡬλνλ λ° μ무 λ¬Έμ μμ΄ λ§λ€μ΄μ€λ€.
-
κ°μ²΄ μ§ν₯ νλ‘κ·Έλ¨μ λ©λͺ¨λ¦¬ μ¬μ©λ°©μ
- λ°μ΄ν° μ μ₯ μμ = Tλ©λͺ¨λ¦¬ ꡬ쑰
- μ μ°¨μ νλ‘κ·Έλλ° : gotoλ₯Ό μ°μ§ λ§λΌλ κ²
- goto : νλ‘κ·Έλ¨μ μ€ν μμλ₯Ό μ΄λ¦¬μ 리 μ΄λ μν€λ μμ½μ΄ (μ μ΄μ μν )
- μ΄λμ΄ μ¦μμ§λ©΄ νλ‘κ·Έλ¨ μ΄ν΄κ° νλ€λ€. νλ‘κ·Έλ¨μ λ Όλ¦¬μ μΌλ‘ μ ꡬμ±νλ©΄ gotoλ₯Ό νΌν μ μλ€.
- ꡬ쑰μ νλ‘κ·Έλλ° : ν¨μλ₯Ό μ°λΌλ κ²
- μ€λ³΅μ½λλ₯Ό νκ³³μ λͺ¨μ κ΄λ¦¬ν μ μκ³ λ Όλ¦¬λ₯Ό ν¨μ λ¨μλ‘ λΆλ¦¬ν΄μ μ΄ν΄νκΈ° μ¬μ΄ μ½λλ₯Ό μμ±ν μ μλ€.
곡μ λ¬Έμ λ‘ μ μλ³μλ³΄λ€ μ§μλ³μλ₯Ό μ°λΌλ μ§μΉ¨λ μμ.
- κ°μ²΄ μ§ν₯ μΈμ΄μμ μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ°μ μ μ°μ λ©μλ μμμ νμΈν μ μλ€.
- μ μ΄λ¬Έμ΄ μ‘΄μ¬ν μ μλ 곡κ°μ λ°λ‘ λ©μλ λ΄λΆμ΄κΈ° λλ¬Έ.
- goto = μ μ΄λ¬Έ , ν¨μ = λ©μλ
ν¨μμ λ©μλ μ°¨μ΄ : ν¨μλ ν΄λμ€λ κ°μ²΄μ μ무κ΄κ³ μμ§λ§ λ©μλλ λ°λμ ν΄λμ€ μμ μ‘΄μ¬ν΄μΌ νλ€.
- μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ°μ μ μ°μ μλ₯Ό 보면 μλ° ν€μλ μ€ μ λ° μ΄μμ΄λ€.
- for, switch, if, else, while, return, continue, break λ±
- κ°μ²΄μ§ν₯μ μ΄ν΄νκΈ°μν΄ μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ°μ μ΄ν΄ν΄λ³΄μ.
ackage section2.ex2_1;
public class Start{
public static void main(String[] args) {
System.out.println("Hello OOP!!");
}
}
-
JREλ νλ‘κ·Έλ¨ μμ
main()
λ©μλκ° μλμ§ νμΈνλ€. -
νμΈ λλ©΄ JREλ JVMμ μ μμ λ£μ΄ λΆν νλ€.
-
λΆν λ JVMμ λͺ©μ νμΌμ μ€ννλ€. (λ©λͺ¨λ¦¬ ꡬ쑰λ₯Ό κ΅¬μ± λ° κ΅¬λ¬Έ μ€ν)
3-1.main()
λ©μλ μ€νμ μ μ²λ¦¬ μμ μ μ§ννλ€.- κ°μ₯ λ¨Όμ
java.lang
ν¨ν€μ§λ₯Ό Tλ©λͺ¨λ¦¬ μ€νν± μμμ λ°°μΉνλ€. - κ°λ°μκ° μμ±ν λͺ¨λ ν΄λμ€μ
importν¨ν€μ§
μμ Tλ©λͺ¨λ¦¬ μ€νν± μμμ λ°°μΉνλ€.
3-2.
main()
λ©μλλ₯Ό μ€ννλ μ(stack frame)μ ν λΉνλ€.- μ¬λ μ€κ΄νΈλ₯Ό λ§λ λ μ€ν©νλ μμ΄ νλμ© μκΈ°λ©° λ«λ μ€κ΄νΈλ₯Ό λ§λλ©΄ μ€ννλ μμ΄ μλ©Έλλ€.
3-3. λ©μλ μΈμμΈ
args
λ₯Ό μ€ννλ μ(stack frame)μ λ³μ 곡κ°μ ν λΉνλ€.
3-4. λ©λͺ¨λ¦¬ ꡬ쑰 κ΅¬μ± νmain()
λ©μλμ 첫 λͺ λ Ήλ¬Έμ μ€ννλ€.3-5. ꡬ문 μ€νμ΄ λλλ©΄
main()
λ©μλμ μ€ννλ μμ΄ μλ©Έλλ€. - κ°μ₯ λ¨Όμ
-
μ€νμ΄ λλλ©΄ JREλ JVMμ μ’ λ£νλ€.
-
JREλ μ¬μ©νλ μμμ μ΄μ체μ μ λ°λ©νλ€. (μ΄μ체μ μμ λ©λͺ¨λ¦¬μμ μλ©Έ)
package section2.ex2_2;
public class Start2 {
public static void main(String[] args) {
int i;
i = 10;
double d = 20.0;
}
}
-
int i;
- λ©λͺ¨λ¦¬μ 4λ°μ΄νΈ ν¬κΈ°μ μ μ μ μ₯ 곡κ°μ main()λ©μλ μ€ννλ μμμ λ§λ ¨νλΌλ λͺ λ Ήμ΄λ€.
- μμ§ μ΄κΈ°ν λμ§ μμ μνμ΄λ―λ‘, λ€λ₯Έ νλ‘κ·Έλ¨μ΄ μ²μνμ§ μκ³ κ° κ°μ κ·Έλλ‘ κ°μ§κ³ μκ² λλ€.
- μ΄ μνλ‘ i λ³μλ₯Ό μ¬μ©νλ μ½λλ₯Ό λ§λκ² λλ©΄, μ»΄νμΌ μλ¬κ° λ°μνλ€.
The local variable i may not have been initialized
-
i = 10;
double d = 20.0;
double d = 20.0;
μ κ²½μ° λ³μ μ μΈ λͺ λ Ήλ¬Έκ³Ό ν λΉ λͺ λ Ήλ¬Έμ΄ νμ€μ μλ κ²
package section2.ex2_3;
public class Start3 {
public static void main(String[] args) {
int i = 10;
int k = 20;
if (i == 10) {
int m = k + 5;
k = m;
} else {
int p = k + 10;
k = p;
}
}
//k = m + p;
}
-
if (i == 10)
λΆκΈ°- λΉκ΅ κ²°κ³Όκ° true μ΄λ―λ‘ ifλΈλ‘μ μ€ν νλ μμ΄ main() λ©μλμ μ€ννλ μ μμ μ€μ²©λμ΄ μμ±λλ€.
-
int m = k + 5;
- λ³μ
m
μ κ°μ ν λΉνλ€. - μ΄ λ if μ€ν νλ μ λ°μ μλ
k
λ³μλ₯Ό μ°μ°μ μ°Έμ¬μν¨λ€.
- λ³μ
-
if λΈλ‘ μ’ λ£ ν μ€ν νλ μμ μλ©Έλλ€.
- else λΈλ‘μ μ€ν λ©λͺ¨λ¦¬μ λ±μ₯νμ§λ λͺ»νμ.
λ§μ½ μ£Όμμ ν΄μ νλ€λ©΄?
mλ³μμ pλ³μλ λ μ΄μ μ‘΄μ¬νμ§ μλλ€. μ£Όμμ νκ³ μ€ννλ©΄ μ»΄νμΌ μ€λ₯κ° λ°μνλ€.
m cannot be resolved to a variable
,p cannot be resolved to a variable
- μ§μ λ³μ : μ€ν νλ μ μμμ μΌμμ 보λΈλ€. μ€ν νλ μμ΄ μ¬λΌμ§λ©΄ ν¨κ» μ¬λΌμ§λ€.
- ν΄λμ€ λ©€λ² : μ€νν± μμμμ μΌμμ 보λΈλ€. JVMμ΄ μ’ λ£λ λ κΉμ§ κ³ μ λ(static) μνλ‘ μ리λ₯Ό μ§ν¨λ€.
- κ°μ²΄ λ©€λ² λ³μ : νμμ μΌμμ 보λΈλ€. κ°μ²΄μ ν¨κ» κ°λΉμ§ 컬λ ν°(λ©λͺ¨λ¦¬ νμκΈ°)μ μν΄ μΌμμ λ§μΉλ€.
μΈλΆ μ€ν νλ μμμ λ΄λΆ μ€ν νλ μμ λ³μμ μ κ·Όνλ κ²μ λΆκ°λ₯ νλ κ·Έ μμ κ°λ₯νλ€.
κ·Έλμ μ€ν λ©λͺ¨λ¦¬ λ΄μ μ€ν νλ μ μμ λ³μλ₯Ό μ§μ λ³μλΌκ³ νλ€.
package section2.ex2_5;
public class Start4 {
public static void main(String[] args) {
int k = 5;
int m;
m = square(k);
}
private static int square(int k) {
int result;
k = 25;
result = k;
return result;
}
}
-
square()
νΈμΆ- main()λ©μλμ λ³μ kμ square()λ©μλμ λ³μ kλ λ³λμ λ³μ 곡κ°μ΄λ€.
- μ΄λ₯Ό Call By Value(κ°μ μν νΈμΆ) λΌνλ©°, square()λ©μλμ kμ λ¬΄μ¨ μ§μ ν΄λ main()λ©μλμ kμ μν₯μ΄ μλ€.
- μΈμλ‘ μ λ¬λλ κ²μ λ³μκ° μ μ₯ν κ°λ§ 볡μ ν΄μ μ λ¬νλ€.
- square()κ° λλλ©΄ μ€ν νλ μμ μ¬λΌμ§μ§λ§, λ°νκ°μ΄ μμΌλ κ·Έκ°μ λλ €μ£Όλ©΄μ μλ©Έλλ€.
- main()μ΄λκ° square()λ΄μ μ§μλ³μμ μ κ·Όν μ μμκΉ? μλ€.
- square()νΈμΆ μ μ μ€ν νλ μ μ‘°μ°¨ μ‘΄μ¬νμ§ μλλ€.
- square()νΈμΆμ΄ λλ νμ λ°λ‘ μ€ν νλ μμ΄ μλ©Έλλ€.
- square()μ΄λκ° main()λ΄μ μ§μλ³μμ μ κ·Όν μ μμκΉ? μλ€.
μ μκ° μ§μνλ μ΄μ 3κ°μ§- κ·Έκ²μ΄ μ΄μΉμ λ§κΈ° λλ¬Έμ΄λ€.
- λ©μλλ μλ‘μ κ³ μ 곡κ°μ΄λ©°, μλ‘ μΉ¨λ²νλ©΄ λ¬Έμ λ₯Ό μ λ°ν μ μκΈ° λλ¬Έμ΄λ€.
- ν¬μΈν° λ¬Έμ λλ¬Έμ΄λ€.
- square()λ©μλμμ main()λ©μλ λ΄λΆμ μ§μλ³μμ μ κ·Όνλ €λ©΄ λ³μμ μ νν μμΉλ₯Ό μμμΌνλ€.
- μμΉλ₯Ό μκΈ°μν΄μ ν¬μΈν°(λ©λͺ¨λ¦¬ μ£Όμκ°)μ μμμΌνλ€. νμ§λ§ Javaμ ν¬μΈν°κ° μλ€.
- λ©μλλ λ€μν κ³³μΌλ‘λΆν° νΈμΆλλ€.
- λ©μλλ₯Ό νΈμΆνλ©΄μ λ§λ€μ΄μ§λ μ€ν ꡬ쑰λ νμ λ³ννλ€.
- A β‘οΈ B β‘οΈ Cλ‘ νΈμΆλ μ μκ³ F β‘οΈ B β‘οΈ Cλ‘ νΈμΆλ μλ μλ€.
- λ§μ½ ν Cλ©μλκ° νλ¨ λ©μλ μ€ν νλ μ μ€ ν λ³μλ₯Ό μ°Έμ‘°νλ€λ©΄, μ΄λ μ€ν νλ μμ λ³μλ₯Ό μ°Έμ‘°ν΄μΌνλκ°?
- κ²°κ΅ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ €λ©΄ λ ν¬μΈν°κ° νμνλ€.
- κ·Έκ²μ΄ μ΄μΉμ λ§κΈ° λλ¬Έμ΄λ€.
λ©μλ μ¬μ΄ κ°μ 곡μ νλ λ νλμ λ°©λ²μ μ μλ³μ μ¬μ©μ΄λ€.
package section2.ex2_6;
public class Start5 {
static int share;
public static void main(String[] args) {
share = 55;
int k = fun(5, 7);
}
private static int fun(int m, int p) {
share = m + p;
return m - p;
}
}
-
mainλ©μλ μ€ν μ Tλ©λͺ¨λ¦¬
- shareλ static λ³μμ΄λ―λ‘ ν΄λμ€ λ©€λ²λ‘μ μ€νν± μμμ λ³μ 곡κ°μ ν λΉλλ€.
-
funλ©μλ νΈμΆ
- μ μ λ³μλ μ€ν νλ μμ λ 립μ μ΄λ©°, μ¬λ¬ λ©μλλ€μ΄ 곡μ ν΄μ μ¬μ©ν μ μλ€.
- νμ§λ§, μ½λκ° μ»€μ§λ©΄μ μ¬λ¬ λ©μλμμ μ μ λ³μμ κ°μ λ³κ²½νκΈ° μμνλ€λ©΄?
- Tλ©λͺ¨λ¦¬λ‘ μΆμ νμ§ μλ μ΄μ μ μ λ³μμ μ μ₯λμ΄ μλ κ° νμ
μ΄ μ½μ§ μλ€.
- μ μμ μμλ μ½λλ₯Ό μΆμ ν΄ λ€μ΄κ°μΌλ§ κ·Έ κ°μ΄ λ³ν μ΄μ λ₯Ό νμ ν μ μλ€.
- μ μ λ³μλ₯Ό νΌν μ μμΌλ©΄ νΌνλΌ.
- νμ§λ§ μ½κΈ° μ μ©μΌλ‘ κ°μ 곡μ ν΄μ μ μ λ³μλ‘ μ°λ 건 μ κ·Ή μΆμ². ex) μμ£Όμ¨
-
λ©ν° μ€λ λ : νλμ Tλ©λͺ¨λ¦¬μ μ€ν μμμ μ€λ λ κ°μλ§νΌ λΆν ν΄μ μ΄λ€.
- νλμ μ€λ λμμ λ€λ₯Έ μ€λ λμ μ€νμμμ μ κ·Όν μ μμ§λ§, staticκ³Ό νμμμ 곡μ ν΄μ μ¬μ©νλ ꡬ쑰.
- λ©λͺ¨λ¦¬λ₯Ό μ κ² μ¬μ©ν μ μλ ꡬ쑰.
-
λ©ν° νλ‘μΈμ€ : λ€μμ λ°μ΄ν° μ μ₯ μμ. μ¦ λ€μμ Tλ©λͺ¨λ¦¬λ₯Ό κ°λλ€.
- κ°μ κ³ μ ν 곡κ°μ κ°κΈ° λλ¬Έμ λ©λͺ¨λ¦¬ μμ ν ꡬ쑰.
- λ©λͺ¨λ¦¬ μ¬μ©λμ κ·Έλ§νΌ ν¬λ€.
μλΈλ¦Ώμ μμ²λΉ μ€λ λλ₯Ό μμ±νλ€ β‘οΈ μ΄λ νλ‘μΈμ€λ³΄λ€ ν¨μ¨μ μ΄λ€.
- μ°κΈ° κ°λ₯ν μ μ λ³μλ₯Ό μ¬μ©νλ©΄ μ€λ λ μμ μ±μ΄ κΉ¨μ§λ€κ³ νννλ€.
- λ¬Όλ‘ lockμ κ±°λ λ°©λ²μ΄ μμ§λ§ μ΄λ λ©ν° μ€λ λμ μ₯μ μ λ²λ¦°κ²κ³Ό κ°λ€.
- μμ
- μ€λ λ1μ΄ μ μλ³μAμ 10μ ν λΉνλ€.
- CPU μ¬μ©κΆμ΄ μ€λ λ2λ‘ λμ΄κ°κ³ μ€λ λ2κ° μ μλ³μAμ 20μ ν λΉνλ€.
- CPU μ¬μ©κΆμ΄ λ€μ μ€λ λ1λ‘ λμ΄κ°κ³ μ€λ λ1μ μ μλ³μAλ₯Ό μΆλ ₯νλλ κ°μκΈ° 20μ΄ λμλ€.
μ©μ΄ μ 리
μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ° : 곡μ λ³μ = νλ, κΈ°λ₯μ μμ = ν¨μ
κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° : μ μλ³μ = νλ‘νΌν°, ν¨μ = λ©μλ
- μ°μ°μ, μ μ΄λ¬Έ, λ©λͺ¨λ¦¬ κ΄λ¦¬ μ²΄κ³ λ±λ± κ°μ²΄ μ§ν₯μ μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ°μ λ§μ λΆλΆμ μ°¨μ©νκ³ μλ€.
- C++λ CμΈμ΄λ₯Ό λΆμ ν κ²μ΄ μλλΌ κ³μΉν κ²μ΄λ€.
- κ·Έλμ νλ‘κ·Έλλ¨Έλ μ μ°¨μ /ꡬ쑰μ νλ‘κ·Έλλ°λ μ μκ³ μμ΄μΌνλ€.
2μ₯μμλ κ°μ²΄λ₯Ό μ¬μ©ν μ μ΄ μκΈ° λλ¬Έμ ν μμμ λμνμ§ μμμ.