1. λ°°μ λ κ²
1. νμ€ μ /μΆλ ₯
μλ°μ νμ€ μΆλ ₯μ ν¬κ² 3κ°μ§λ‘ λλμ΄μ§λ€.
- μ€ κ°νμ ν¬ν¨νμ§ μλ print();
- μλμΌλ‘ μ€ κ°ν κΈ°λ₯μ ν¬ν¨νλ println();
- νμ μ§μ νμ€ μΆλ ₯ ν¨μ printf();
System.out.print("κ°νμμ΄ μΆλ ₯ν΄λ³ΌκΉμ");
System.out.println(" κ°ν κΈ°λ₯ ν¬ν¨ μΆλ ₯");
System.out.print("μλ
νμΈμ");
System.out.println(" μλ
ν κ°μΈμ");
/*
κ°νμμ΄ μΆλ ₯ν΄λ³ΌκΉμ κ°ν κΈ°λ₯ ν¬ν¨ μΆλ ₯
μλ
νμΈμ μλ
ν κ°μΈμ
*/
- μ½λλ₯Ό 보면 print()μ κ²½μ°, λ΄μ©μ μΆλ ₯ν ν λ€μ μΆλ ₯μ μν 컀μκ° κ·Έ μ리μ λ¨Έλ¬Όκ² λμ΄, λ€μ λ¬Έμ₯μ΄ κ°λ‘λ‘ μ΄μ΄μ λΆμ΄μ μ€λ ₯
- μ΄μ λ°λλ‘ println()μ λ΄μ© μΆλ ₯ν ν, λ€μ μΆλ ₯μ μν 컀μκ° ν μ€ μλμ λ¨Έλ¬Όκ² λ¨.
- printf()λ μμ λ¬Έμλ₯Ό νμ©νμ¬ λ¨Όμ λ¬Έμμ΄μ μμ±μν€κ³ , μμ λ¬Έμμ λ€μ΄κ° κ°μ μ§μ ν΄μ μΆλ ₯νλ λ°©μμ΄λ€.
- printf()λ print()μ λ§μ°¬κ°μ§λ‘ μ€ κ°ν κΈ°λ₯μ΄ μμ΄, "\n"κ³Ό κ°μ΄ λ°λ‘ μ€ κ°ν λͺ λ Ήμ λ΄λ €μ€μΌνλ€.
/*
# ν¬λ§·ν
μμ λ¬Έμ μ’
λ₯
%d: λΆνΈκ° μλ μ μ λ°μ΄ν° (decimal)
%f: μ€μ λ°μ΄ν° (floation point)
%s: λ¬Έμμ΄ (String)
# νμΆ λ¬Έμ (escape sequence) -> printfμλ§ λμνλ κ² μλμμ.
- λ°λμ λ°μ΄ν λ΄μ μμΉν΄μΌ ν©λλ€
- λ¬Έμμ΄ λ΄μμ νΉμ λͺ
λ Ήμ λ΄λ¦¬κ³ μΆμ λ μ¬μ©νλ νΉμ κΈ°νΈμ
λλ€.
\n: μ€ κ°ν λͺ
λ Ή
\t: κ°λ‘ 곡백 (μ€νμ΄μ€ 4μΉΈ)
\\: λ°±μ¬λμ λ¬Έμλ₯Ό λνλΌ λ μ¬μ©.
\': ν λ°μ΄νλ₯Ό λ¬Έμλ‘ μΆλ ₯ν λ μ¬μ©
\": μ λ°μ΄νλ₯Ό λ¬Έμλ‘ μΆλ ₯ν λ μ¬μ©
*/
int month = 12;
int day = 25;
String anni = "ν¬λ¦¬μ€λ§μ€";
//12μ 25μΌμ ν¬λ¦¬μ€λ§μ€ μ
λλ€.
System.out.println(month + "μ " + day + "μΌμ " + anni + " μ
λλ€.");
System.out.printf("%dμ %dμΌμ %sμ
λλ€.\n", month, day, anni);
//μ€μλ₯Ό νννλ μμλ¬Έμ %f -> κΈ°λ³Έ 6μ리κΉμ§ νν.
//%.[μ리μλ₯Ό μ§μ νλ μ«μ]f -> μνλ μ리μκΉμ§ νν.
//%λΌλ λ¬Έμ μ체λ₯Ό ννν λλ %% μ°μλ©΄ λ©λλ€.
double rate = 64.126;
System.out.printf("ν©κ²©λ₯ μ %.2f%%μ
λλ€.", rate);
1 - 1. νμ€ μ λ ₯
- ScannerλΌλ μ΄λ¦μ κ°μ§ κ°μ²΄λ₯Ό κΈ°λ³Έμ μΌλ‘ μ 곡ν΄μ μ λ ₯μ λ°μ μ μκ²ν¨.
- Scanner κ°μ²΄ μμ± λ°©λ²
import java.util.Scanner; // 1. Scanner ν΄λμ€μ μ 보λ₯Ό import
Scanner sc = new Scanner(System.in); // 2. Scanner κ°μ²΄λ₯Ό μμ±νλ€.
/*
new Scanner(System.in);
-> μλ‘μ΄ μ€μΊλ κ°μ²΄λ₯Ό μμ±νλ€. κ΄νΈ μμλ μλ°μ νμ€ μ
λ ₯ λͺ
λ Ήμ μ λ¬νλ€.
κ·Έλ¦¬κ³ λμ scλΌλ λ³μμ μ€μΊλ κ°μ²΄λ₯Ό λ΄λλ€. κ·Έλ λ€λ©΄ scμ νμ
μ
μ€μΊλλ₯Ό λ΄κ³ μμΌλ νμ
μ΄ Scanner κ² κ΅¬λ~
μ λλ‘ ν΄μνλ©΄ μΆ©λΆνλ€.
λ³μλͺ
μ in, input, sc, scan λλ μ’λ€. μ΄ λ€ κ°λ₯Ό μ£Όλ‘ λ§μ΄ μ΄λ€.
*/
/*
3. Scannerμ ν¨μλ€μ μ΄μ©νμ¬ λ°μ΄ν°λ₯Ό μ
λ ₯λ°μ μ μμ΅λλ€.
- next(): κ³΅λ°±μ΄ μλ λ¬Έμμ΄μ μ
λ ₯ λ°μ΅λλ€.
- nextLine(): 곡백μ ν¬ν¨ν λ¬Έμλ₯Ό μ
λ ₯ λ°μ΅λλ€.
- next + κΈ°λ³Ένμ
μ΄λ¦(): ν΄λΉ νμ
μ λ§λ λ°μ΄ν°λ₯Ό μ
λ ₯ λ°μ΅λλ€.
ex)
nextInt(): μ μ λ°μ΄ν°λ₯Ό μ
λ ₯ λ°μ΅λλ€.
nextDouble(): μ€μ λ°μ΄ν°λ₯Ό μ
λ ₯ λ°μ΅λλ€.
nextBoolean(): λ
Όλ¦¬ν λ°μ΄ν°λ₯Ό μ
λ ₯ λ°μ΅λλ€.
nextLong(): μ μ(long) λ°μ΄ν°λ₯Ό μ
λ ₯ λ°μ΅λλ€.
**char λ°μ΄ν°λ₯Ό λ°λ λ©μλλ λ°λ‘ μμ΅λλ€. ν κΈμμ¬λ λ¬Έμμ΄λ‘ λ°μΌμΈμ.
*/
// 3. Scannerκ° μ 곡νλ λ©μλλ₯Ό μ΄μ©ν΄μ μ
λ ₯κ°μ λ°κΈ°
System.out.print("μ΄λ¦: "); //무μμ μ
λ ₯ν μ§ κ°λ¨ν μΆλ ₯λ¬Έμ μ°μ.
String name = sc.next(); //μ
λ ₯λ°μ λ¬Έμμ΄μ next()κ° λ°μμ nameμ ν λΉν΄ μ€λ€.
System.out.print("λμ΄λ₯Ό μ
λ ₯νμΈμ: ");
int age = sc.nextInt(); //μ
λ ₯λ°μ μ μλ₯Ό nextInt()κ° λ°μμ ageμ ν λΉν΄ μ€λ€.
System.out.println("μ μ΄λ¦μ " + name + "μ΄κ³ , λμ΄λ " + age + "μΈ μ
λλ€.");
System.out.printf("μ μ΄λ¦μ %sμ΄κ³ , λμ΄λ %dμΈ μ
λλ€.", name, age);
sc.close(); // Scanner κ°μ²΄λ₯Ό λ°λ©
- μ¬κΈ°μ ν·κ°λ¦΄ μ μλ next(), nextLine()μ μ°¨μ΄μ
- μ°μ 2κ° λ€ Stringμ λ°λλ€λ 곡ν΅μ μ΄ μμ§λ§, next()λ 곡백μ κΈ°μ€μΌλ‘ 곡백 μ κΉμ§μ λ¬Έμ₯λ§μ μ½μ΄ λ€μΈλ€.
λ°λλ‘ nextLine()μ ν μ€μ μ λ ₯λ μ¬λ¬ λ¬Έμ₯μ 곡백κΉμ§ ν¬ν¨ν΄μ μ½μ μ μλ€.
2. 쑰건문
- νΉμ 쑰건μ λ°λΌ λ³λμ λͺ λ Ήμ μννλλ‘ μ μ΄νλ λͺ λ Ήλ¬Έ.
2 - 1. if / else if / else
- if μμ μμ±λ κ΄νΈ μμ λ Όλ¦¬ν 쑰건μμ μμ±, κ·Έλ¦¬κ³ κ·Έ 쑰건μμ΄ trueλ©΄ if μμ μλ μ½λ λΈλμ μ€ν.
- else ifμ κ²½μ°μλ if λ€μ λ°λΌλΆμ΄μΌ νλ 쑰건문μΌλ‘, μμ if λ¬Έμ΄ μ€νλμ§ μλ 쑰건μμ else ifλ¬Έμ μ‘°κ±΄μ΄ μ°Έμ΄λ©΄ else if μμ μλ μ½λ λΈλμ μ€ννλ€.
- elseλ¬Έμ μμ μλ λͺ¨λ μ‘°κ±΄μ΄ falseμΌ λ μ€νλλ λΈλ‘. μ¦, else if / ifλ¬Έ λͺ¨λ μ€νλμ§ μμμ λ μ€ν.
// ifλ¬Έμ νν
if (쑰건μ) {
// κ΄νΈ μμ μ‘°κ±΄μ΄ trueμΌ λ, μ€ν ν μ½λ
} else if (쑰건μ2) {
// μμ ifλ¬Έμ 쑰건μμ΄ falseμ΄κ³ , 쑰건μ2κ° trueμΌ λ μ€ν ν μ½λ
} else {
// μμ 쑰건μ, 쑰건μ2 λͺ¨λ falseμΌ λ μ€νν μ½λ
}
- λ§μ½ 첫 λ²μ§Έ μ‘°κ±΄μ΄ μ°Έμ΄κ³ , μ΄κ²μ λ μΈλΆμ μΌλ‘ 쑰건μ λλκ³ μΆλ€λ©΄ ifλ¬Έ μμ λ λ€λ₯Έ ifλ¬Έμ λ£μ μ μλ€. (μ€μ²© ifλ¬Έ)
if (쑰건μ1) {
if (쑰건μ2) {
// 쑰건μ1κ³Ό 쑰건μ2κ° λͺ¨λ μ°ΈμΌ λ μ€νν μ½λ
}
} else {
// 쑰건μ1μ΄ κ±°μ§μΌ λ μ€νν μ½λ
}
2 - 2. switch, case λ¬Έ
- switchλ¬Έμ κΈ°μ€μ΄ λλ λ³μλ μμ κ²°κ³Όμ λ°λΌμ μ¬λ¬ κ°μ caseλ¬Έ μ€ νλλ₯Ό μ ννμ¬ μ€ννλ μ μ΄λ¬Έμ΄λ€.
switch (λ³μ λλ μμ) {
case 첫λ²μ§Έ κ°:
// 첫λ²μ§Έ κ°μ΄ λ§μ κ²½μ°, μΆλ ₯λλ μ½λ
break;
case λλ²μ§Έ κ°:
// λλ²μ§Έ κ°μ΄ λ§μ κ²½μ°, μΆλ ₯λλ μ½λ
break;
case μΈλ²μ§Έ κ°:
case λ€λ²μ§Έ κ°:
// μΈλ²μ¨°, λ€λ²μ§Έ κ°μ΄ λ§μ κ²½μ°, μΆλ ₯λλ μ½λ
break; // switchλ¬Έμ λΉ μ Έλκ°κ² ν΄μ£Όλ μν , μμ±νμ§ μμ κ²½μ° μ½λκ° μ΄μ΄μ μ§ννκ²λ¨.
default: // μΌμΉνλ caseλ¬Έμ΄ μμΌλ©΄ μ€νλλ κ³³ (μμ¨λ 무방νλ€.)
// λͺ¨λ caseλ¬Έμ΄ ν΄λΉλμ§ μμ λ, μΆλ ₯λλ μ½λ
break;
}
- switchλ¬Έ λ΄λΆμ λ³μ λλ μμμ λ°λμ μ μ/λ¬Έμ/λ¬Έμμ΄ νμ λ§ κ°λ₯.
- caseλ¬Έ λ€μλ λ°λμ μ½λ‘ (:)μ λΆμΈλ€.
3. λ°λ³΅λ¬Έ
νΉμ ν 쑰건μ΄λ νμμ λ°λΌμ μ½λ λΈλμ λ°λ³΅μ μΌλ‘ μ€νμν€κ³ μΆμ λ μ¬μ©νλ λ¬Έλ²
μ¬λ¬ κ³³μ μμ£Όμ°μ΄λ νν μ€ νλμ΄λ€.
λ³΄ν΅ while / for ν€μλλ₯Ό μ¬μ©νλ€.
3 - 1. while λ¬Έ
// whileλ¬Έμ κΈ°λ³Έμ μΈ νν
while (쑰건μ) {
// μ€νλ μ½λ
}
- μ΄ λ, 쑰건μμ΄ trueμΈ λμ λ°λ³΅λ¬Έμ΄ κ³μν΄μ μ€νλλ€. (falseκ° λλ©΄ μ’ λ£)
- κ·Έλ¬λ―λ‘ λ¬΄ν λ°λ³΅λ¬Έμ λ§λ€ λͺ©μ μ΄ μλλΌλ©΄, λ°λ‘ λ³μλ₯Ό μ μΈνμ¬ λ°λ³΅λ¬Έμ νμλ₯Ό μ‘°μ ν΄μΌνλ€.
// whileλ¬Έ μμ
int cnt = 1; // μ μ΄ λ³μ : λ°λ³΅λ¬Έμ νμλ₯Ό μ μ΄ν λ³μ. (begin)
int total = 0;
while(cnt <= 5) { // λ
Όλ¦¬ν 쑰건μ : λ°λ³΅λ¬Έμ λμ μ§μ . (end)
total += cnt;
cnt++; // μ¦κ°μ : λ°λ³΅λ¬Έμ μ’
λ£λ₯Ό μν΄ μ μ΄ λ³μμ κ°μ μ‘°μ (step)
}
System.out.println(total); // 15
- whileλ¬Έμ μ€νμν€κΈ° μν νμ 3μμμΈ begin, end, stepμ΄ μμ.
- λ§μ½ μ΄ 3μμ μ€ νλλΌλ λλ½λ κ²½μ°μλ λ°λ³΅λ¬Έμ΄ μ΄μνκ² λμκ° μ μμ.
- whileλ¬Έμ μ§ν μμ.
- μ μ΄ λ³μλ₯Ό μ μΈν¨. (μμκ°μ΄ μ ν΄μ§)
- whileλ¬Έμ 쑰건μμ κ²μ¬νμ¬ trueλ©΄ λ°λ³΅λ¬Έμ΄ μμ. falseλΌλ©΄ λ°λ³΅λ¬Έ μ’ λ£.
- whileλ¬Έ λΈλ‘ λ΄λΆκ° νλ² μ§νλλ©΄ λ€μ 쑰건μμ κ²μ¬νμ¬ trueλΌλ©΄ λ°λ³΅λ¬Έ κ³μ μ§ν. falseλΌλ©΄ μ’ λ£.
- λ°λ³΅λ¬Έ λ΄μ μ¦κ°μμ λ£μ΄ μ μ΄ λ³μ κ°μ μ‘°μ .
3 - 2. for문
// for문
for (μ΄κΈ°ν; 쑰건μ; μ¦κ°μ) {
// μ€νλ μ½λ
}
- forλ¬Έμ κ²½μ°, μ΄κΈ°ν/ 쑰건μ/ μ¦κ°μ/ μ½λλ‘ κ΅¬μ±λμ΄ μμ. μ¦, whileμ 3μμκ° κ΄νΈ μμ νλ²μ μ§μ λλ κ².
// forλ¬Έμ κ°λ¨ μμ
int total = 0;
for (int i = 0; i <= 10; i++) {
total += i;
}
System.out.println(total); // 55
- κ·ΈλΌ μ΄λ€ μν©μμ while λλ forμ μ¨μΌν κΉ?
- μμκ³Ό λ λ²μκ° νμ€ν λ°λ³΅μ κ²½μ°μλ forλ¬Έμ λ λ§μ΄ μ¬μ©.
- νμ보λ€λ 쑰건μ λ°λΌ λ°λ³΅μ μ§νν λλ whileμ λ λ§μ΄ μ¬μ©.
3 - 3. λ°λ³΅λ¬Έ μ€μ²©
- λ°λ³΅λ¬Έ μμ λ€λ₯Έ λ°λ³΅λ¬Έμ΄ λ€μ΄κ° ꡬ쑰.
- λ§ κ·Έλλ‘ λ°λ³΅λ¬Έ μ체λ₯Ό λ°λ³΅ν΄μΌ νλ κ²½μ°μ μ¬μ©νλ ꡬ쑰.
// λ°λ³΅λ¬Έ μ€μ²© μμ
for(int dan=2; dan<=9; dan++) {
System.out.println("κ΅¬κ΅¬λ¨ " + dan + "λ¨");
System.out.println("---------------");
for(int hang=1; hang<=9; hang++) {
System.out.printf("%d x %d = %d\n"
, dan, hang, dan*hang);
}
System.out.println("---------------");
}
- λ°λ³΅λ¬Έ μ€μ²©μ μ§ν μμ
- λ°κΉ₯μͺ½ λ°λ³΅λ¬Έμ μ°μ μ€ννλ€.
- μμͺ½ λ°λ³΅λ¬Έμ μ€ννλ€.
- μμͺ½ λ°λ³΅λ¬Έμ΄ λͺ¨λ μ€νμ΄ λμλ€λ©΄, λ€μ λ°κΉ₯μͺ½ λ°λ³΅λ¬ΈμΌλ‘ λμκ°μ λ°λ³΅μ μ§ννλ€.
- λ°κΉ₯μͺ½ λ°λ³΅λ¬Έμ΄ falseκ° λ λκΉμ§ λ°λ³΅νλ€.
- λ°λ³΅λ¬Έ μ€μ²©μμλ 쑰건μ / μ¦κ°μ λ±μ μΈλ°νκ² μ‘°μ ν΄μΌ νλ€. λ³΄ν΅ λ°κΉ₯μͺ½ λ°λ³΅λ¬Έμ μ μ΄ λ³μκ° λ΄λΆ λ°λ³΅λ¬Έμ μν₯μ λ―ΈμΉκ² λλ€.
- λ°λΌμ μ€μ²© λ°λ³΅λ¬Έμ μμ±ν λ, λ°λ³΅λ¬Έμ νλ¦μ μ ννκ² νμ ν μ μμ΄μΌ νλ€.
// μ€μ²© λ°λ³΅λ¬Έμ μ΄μ©ν λ³ν νΌλΌλ―Έλ λ§λ€κΈ°
/*
*
**
***
****
*****
*/
Scanner scanner = new Scanner(System.in);
int star = scanner.nextInt();
for (int i = 1; i <= star; i++) {
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
};
/*
*
**
***
****
*****
*/
for (int i = 1; i <= star; i++) {
// μ‘ μ°κΈ° μ μ 곡백λΆν° λ§λλ forλ¬Έ
for (int k = star - 1; k >= i; k--) {
System.out.print(" ");
}
// λ³μ°λ forλ¬Έ
for (int j = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
};
/*
*****
****
***
**
*
*/
for (int i = 1; i <= star; i++) {
// μ‘ μ°κΈ° μ μ 곡백λΆν° λ§λλ forλ¬Έ
for (int k = 0; k < i - 1; k++) {
System.out.print(" ");
}
// λ³μ°λ forλ¬Έ
for (int j = star; j >= i; j--) {
System.out.print("*");
}
System.out.println();
}
4. νμΆλ¬Έ
νλ‘κ·Έλ¨μ μ€νμ νΉμ μν©μμ κ°μ λ‘ μ’ λ£μν€λ μν μ λΉλ΄.
μλ°μμλ break, continue, return ν€μλλ₯Ό μ¬μ©νλ€.
4 - 1. break
- λ°λ³΅λ¬Έμ΄λ switchλ¬Έμ λΉ μ Έ λμ¬ λ μ£Όλ‘ μ¬μ©.
- λ°λ³΅λ¬Έμμ breakλ¬Έμ μ¬μ©νλ©΄ ν΄λΉ ν€μλκ° λ€μ΄μλ λ°λ³΅λ¬Έ λΈλ‘μ λΉ μ Έ λμ¨λ€.
- switchλ¬Έμμ breakλ¬Έμ μ¬μ©νλ©΄, ν΄λΉ caseλ¬Έμ νμΆ.
for (int i = 0; i <= 5; i++) {
if (i == 3) {
break; // iκ° 3μΌ λ, breakλ¬Έμ λ§λ λ°λ³΅λ¬Έμ λΉ μ Έλμ€κΈ° λλ¬Έμ 0λΆν° 2κΉμ§λ§ μΆλ ₯.
}
System.out.println(i);
}
System.out.println("\nλ°λ³΅λ¬Έ μ’
λ£!");
- labelμ μ¬μ©νλ©΄ μνλ νΉμ λ°λ³΅λ¬ΈκΉμ§ νλ²μ νμΆ κ°λ₯.
4 - 2. 무ν 루ν
λ°λ³΅ νμλ₯Ό μ νμ§ μκ³ , 무ννκ² λ°λ³΅νλ ꡬ쑰.
μ£Όλ‘ μ¬μ©μ μ λ ₯μ λ°λ νλ‘κ·Έλ¨μμ λ§μ΄ μ¬μ©λλ€.
// whileλ¬Έμ 무ν 루ν
while (true) {
// λ°λ³΅ν μ½λ
}
// forλ¬Έμ 무ν 루ν
for (;;) {
// λ°λ³΅ν μ½λ
}
- μ΄λ¬ν 무ν 루νλ 쑰건μμΌλ‘λ νμΆν μ μμ΄μ, λ°λμ νΉμ 쑰건μ ν΅ν΄ νμΆλ¬Έμ μ¬μ©νμ¬ λ£¨νλ₯Ό λΉ μ Έλμ¬ μ μκ² ν΄μΌνλ€.
4 - 3. continue
continueλ λ°λ³΅λ¬Έμμ νμ¬ λ°λ³΅μ 건λλ°κ³ λ€μ λ°λ³΅μ μ€ννλλ‘ νλ€.
λ°λ³΅λ¬Έμ μ€κ°μ κΉ¨λΆμκ³ νμΆνλ breakμ λ¬λ¦¬, continueλ μ§μ λ λ°λ³΅ νμλ₯Ό λ€ λκ³ μ’ λ£κ° λλ€.
- forλ¬Έμμ μ¬μ©νλ©΄ μ¦κ°μμ΄ μ€νλκ³ , whileλ¬Έμμλ 쑰건μμΌλ‘ νλ¦μ΄ μ΄λλλ€.
* returnλ¬Έμ λ©μλμμ κ°μ λ°ννκ³ , λ©μλλ₯Ό μ’ λ£μν€λ μν . (νμ λ§ν λ©μλμμ μΈκΈ)
5. λ°°μ΄
κ°μ νμ μ λ°μ΄ν°λ₯Ό νλμ λ³μμ μ μ₯νλ μλ£κ΅¬μ‘°μ΄λ€.
κ°μ λ°μ΄ν° μ ν λ³μλ₯Ό μ¬λ¬ κ° μ μΈν΄μΌ νλ λΆνΈν¨μ μ€μ΄κΈ° μν΄ μ¬μ©.
μλ°μμ λ°°μ΄μ κ³ μ λ ν¬κΈ°λ‘ μ μΈλλ©°, ν¬κΈ°λ₯Ό λ³κ²½ν μ μλ€.
λ°°μ΄μ λμ’ λͺ¨μ ꡬ쑰μ΄κΈ° λλ¬Έμ, κ°μ λ°μ΄ν° νμ λΌλ¦¬λ§ λͺ¨μ¬μμ μ μλ€.
// λ°°μ΄ μ μΈ λ° μ΄κΈ°ν
int[] arr = new int[5];
System.out.println(Arrays.toString(arr)); // [0, 0, 0, 0, 0]
// intλ°μ΄ν° νμ
μ λν λ°°μ΄μ΄λ―λ‘ intνμ μ μΈνκ³ λ λ°°μ΄μμ μ κ·Όν μ μλ€.
arr[0] = 1;
arr[1] = 2;
arr[2] = arr[0];
arr[3] = (int) 3.145;
arr[4] = 100;
// arr[2] = "str"; (x)
// arr[10] = 1500; (x)
System.out.println(Arrays.toString(arr)); // [1, 2, 1, 3, 100]
- μΈλ±μ€λ 0λΆν° μμνκΈ° λλ¬Έμ, λ§μ§λ§ μΈλ±μ€λ νμ λ°°μ΄μ κΈΈμ΄λ³΄λ€ νλ μλ€.
- λ°°μ΄λ³μλͺ .length νλ‘νΌν°λ₯Ό μ΄μ©νλ©΄ μ½κ² λ°°μ΄μ κΈΈμ΄λ₯Ό νμ ν μ μμ.
System.out.println("arr λ°°μ΄μ κΈΈμ΄: " + arr.length); //5
- λ°°μ΄ μμ± μ, κ°μ μ§μ νμ¬ μ΄κΈ°νν μ μλ€.
int[] nums = {1, 2, 3, 4, 5};
- λ°°μ΄μ μ¬μ©
// κ°μ κΊΌλ΄κ³ μΆμ λ, μΈλ±μ€λ₯Ό μ¬μ©νλ©΄ λλ€.
int[] nums = {1, 2, 3, 4, 5};
System.out.println(numbers[2]); // 3
System.out.println(numbers[4]); // 5
// λ°°μ΄μ μμλ₯Ό λ°λ³΅μ μΌλ‘ μ²λ¦¬νκΈ° μν΄μλ forλ¬Έμ μ΄μ©ν μ μμ.
for (int i = 0; i < nums.length; i++) {
System.out.println(i);
}
/*
1
2
3
4
5
*/
// λ°°μ΄ λ΄λΆλ₯Ό λ¬Έμμ΄ ννλ‘ νμΈνκ³ μΆλ€λ©΄ toString()μ μ¬μ©.
System.out.println(Arrays.toString(numbers)); // [1, 2, 3, 4, 5]
// λ°°μ΄ λ³μλ₯Ό κ·Έλλ‘ μΆλ ₯ν κ²½μ°,ν΄λΉ μ£Όμκ°μ΄ λμ¨λ€. (μ΄μ λ λ°°μ΄μ κ°μ²΄ νμ
μ΄κΈ° λλ¬Έμ΄λ€!)
System.out.println(numbers); // μμμλ μ£Όμκ°μ΄ μΆλ ₯.
5 - 1. for - each λ¬Έ (ν₯μλ for λ¬Έ)
- μλ° 5λΆν° μΆκ°λ κΈ°λ₯μΌλ‘ λ°°μ΄κ³Ό 컬λ μ μμ μ¬μ©ν μ μμ.
- μΈλ±μ€μ μ¬μ© μμ΄, λ°°μ΄ λ΄λΆ μμλ₯Ό μ 체 μ°Έμ‘°ν μ μκ² λμμ€.
for (λ°°μ΄ μμλ₯Ό λ°μ μ μλ λ³μ : λ°°μ΄ λλ 컬λ μ
μ΄λ¦) {
// μ€νλ¬Έ;
}
// μμ
String[] week = {"μ", "ν", "μ", "λͺ©", "κΈ", "ν ", "μΌ"};
/*
for(int i=0; i<week.length; i++) {
System.out.println(week[i] + "μμΌ μ’μ~!");
}
*/
for(String day : week) {
System.out.println(day + "μμΌ μ’μ~");
}
- λ°λ³΅λ¬Έμ μΈλ±μ€ λ³μμ μ μΈμ΄ νμμμ΄ μ½λκ° κΉλν΄μ§κ³ , ꡬ쑰μ λ³νκ° μλ ν forλ¬Έ λ³΄λ€ λΉ λ₯΄λ€λ μ₯μ μ΄ μλ€.
- νμ§λ§, μΈλ±μ€ μ 보λ₯Ό μ μ μκ³ λ²μλ₯Ό μΈλ°νκ² μ§μ ν μ μλ€. λν μμλ₯Ό μμ ν μ μλ λ¨μ μ΄ μλ€.
5 - 2. λ°°μ΄μ μμ
// λ°°μ΄ λ΄λΆμ λ°μ΄ν° μμ μ ν΄λΉ μΈλ±μ€μ μ κ·Όνμ¬ κ°μ λ°μ΄λ£μΌλ©΄ λλ€.
String[] foods = {"μΌκ²Ήμ΄", "μ‘±λ°", "νΌμ", "νλ²κ±°"};
foods[0] = "μΉν¨";
foods[2] = "νμμ‘";
System.out.println(Arrays.toString(foods)); // {"μΉν¨", "μ‘±λ°", "νμμ‘", "νλ²κ±°"}
5 - 3. λ°°μ΄ μΈλ±μ€ νμ
Scanner sc = new Scanner(System.in);
System.out.print("νμν μμμ μ
λ ₯νμΈμ: ");
String name = sc.next();
// 첫λ²μ§Έ λ°©λ²
// boolean νμ
μ λ³μλ₯Ό μ μΈνμ¬ μ‘΄μ¬ μ 무λ₯Ό νμΈν΄ μ€λ€.
// μ°ΎμμΌλ©΄ trueλ‘, λ°λ³΅λ¬Έ λ€ λ릴 λ κΉμ§ λͺ»μ°ΎμμΌλ©΄ falseλ‘.
// λ°λ³΅λ¬Έμ΄ λλκ³ λμ νμΈν΄ μ£Όμ.
boolean flag = false;
for(int i=0; i<foods.length; i++) {
if(name.equals(foods[i])) {
System.out.println("νμ μλ£!");
System.out.println("μΈλ±μ€: " + i + "λ²");
flag = true;
break;
}
}
if(!flag) { //flag == false
System.out.println("μλ μμμ
λλ€.");
}
// λλ²μ§Έ λ°©λ².
// νμνμ§ λͺ»νλ€λ©΄ λ°λ³΅λ¬Έμ΄ λκΉμ§ λμκ°λ©΄μ iμ κ°μ΄ λ°°μ΄μ κΈΈμ΄μ κ°μμ§λ©°
// λ°λ³΅λ¬Έμ 쑰건μμ falseλ‘ λ§λ€λ©΄μ νμΆνλ κ²μ μ΄μ©.
// iκ° λ°°μ΄μ κΈΈμ΄μ κ°μμ‘λ€λ©΄ νμνμ§ λͺ»νλ€λ μ¦κ±°.
int i;
for(i=0; i<foods.length; i++) {
if(name.equals(foods[i]) {
System.out.println("νμ μλ£!");
System.out.println("μΈλ±μ€: " + i + "λ²");
break;
}
}
if(i == foods.length) {
System.out.println("μλ μμμ
λλ€.");
}
5 - 4. λ°°μ΄μ μμ
// μνλ μμΉμ κ° μμ νκΈ°
int[] number = {1, 3, 5, 7, 9, 11};
int targetIndex = 3;
// νμΌ μΈλ±μ€λ₯Ό κΈ°μ€μΌλ‘ λ€μ μλ κ°μ ν μΉΈμ© λ‘겨μ€κΈ° (λ§μ§λ§ λ°μ΄ν° μ κΉμ§)
for (int i = targetIndex; i < (number.length - 1); i++) {
number[i] = number[i + 1];
}
// ν¬κΈ°κ° νλ μμ λ°°μ΄ μ μΈ
int[] temp = new int[number.length - 1];
// λ°°μ΄ λ΄λΆ λ°μ΄ν° 볡μ¬
for (int i = 0; i < temp.length ; i++) {
temp[i] = number[i];
}
// μ£Όμκ° μ΄μ
number = temp; temp = null;
System.out.println(Arrays.toString(number));
// numbers[2] = numbers[3]; // 1, 3, 7, 7, 9, 11
// numbers[3] = numbers[4]; // 1, 3, 7, 9, 9, 11
// numbers[4] = numbers[5]; // 1, 3, 7, 9, 11, 11
// numbers[5] = numbers[6]; (x)
5 - 5. λ°°μ΄ μ½μ
// [10 50 66 90 100 150]
int[] arr = {10, 50, 90, 100, 150};
int newNumber = 66;
int targetIndex = 2;
// 50κ³Ό 90μ¬μ΄μ 66μ μ½μ
νκ³ μΆλ€.
// 1. μ¬μ΄μ¦κ° 1κ° ν° μλ‘μ΄ λ°°μ΄μ μμ±
int[] temp = new int[arr.length + 1];
// 2. κΈ°μ‘΄ λ°μ΄ν°λ₯Ό μ λ°°μ΄μ 볡μ¬
for (int i = 0; i < arr.length; i++) {
temp[i] = arr[i];
}
// 3. μ½μ
μμΉμμ λ°μ΄ν°λ₯Ό λ€λ‘ ν μΉΈμ© μ΄λμν€μ.
// μ΄λ μμλ λμμλΆν° μμν΄μΌ νλ€.
for (int i = arr.length; i > targetIndex ; i--) {
temp[i] = temp[i - 1];
}
// 4. μλ‘μ΄ λ°μ΄ν°λ₯Ό νκ² μΈλ±μ€μ ν λΉ
temp[targetIndex] = newNumber;
// 5. μ£Όμκ° μ΄μ
arr = temp; temp = null;
System.out.println(Arrays.toString(arr));
5 - 6. λ°°μ΄ pop
// pop: λ°°μ΄μ 맨 λ λ°μ΄ν°λ₯Ό μμ νλ©΄μ κΊΌλ΄μ΄.
int[] nums = {10, 20, 30, 40, 50, 60};
// 1. κΈ°μ‘΄ λ°°μ΄λ³΄λ€ ν¬κΈ°κ° 1κ° μμ λ°°μ΄μ μμ±
int[] temp = new int[nums.length - 1];
// 2. μλ³Έ λ°°μ΄μμ 맨 λ μΈλ±μ€λ₯Ό μ μΈν λλ¨Έμ§ λ΄μ© 볡μ¬
for (int i = 0; i < temp.length ; i++) {
temp[i] = nums[i];
}
// 3. μμ κ° λ°±μ
int removedNumber = nums[nums.length - 1];
// 4. μ£Όμκ° μ΄μ
nums = temp; temp = null;
System.out.println(Arrays.toString(nums));
System.out.println("μμ λ κ°μ " + removedNumber + "μ
λλ€.");
6. 2μ°¨μ λ°°μ΄
- κΈ°λ³Έμ μΈ νν
// 3ν 4μ΄μ intν 2μ°¨μ λ°°μ΄
int[][] arr2d = new int[3][4];
/* {
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}
} */
6 - 1. 2μ°¨μ λ°°μ΄μ κ° μ½μ λ° μμ
// 2μ°¨μ λ°°μ΄μ κ° λ£κΈ°
arr2d[1][2] = 50;
arr2d[2][0] = 70;
// κ²°κ³Ό
{
{0, 0, 0, 0},
{0, 0, 50, 0},
{70, 0, 0, 0}
}
6 - 2. 2μ°¨μ λ°°μ΄μ λ°λ³΅λ¬Έ
for(int i=0; i<arr2d.length; i++) {
// iλ μ§κΈ μμ λ°°μ΄ λ©μ΄λ¦¬λ₯Ό μ§λͺ©νλ κ².
for(int j=0; arr2d[i].length; j++) {
// jλ μμ λ°°μ΄ λ©μ΄λ¦¬ μμ λ°μ΄ν°λ₯Ό μ§λͺ©νλ κ².
System.out.println(arr2d[i][j]);
}
}
- κ΄λ ¨ μμ
int[][] score = {
{79, 80, 99}, // A νμ
{49, 65, 12}, // B νμ
{86, 75, 90}, // C νμ
{100, 34, 89}, // D νμ
};
String[] stuName = {"Aνμ", "Bνμ", "Cνμ", "Dνμ"};
String[] subName = {"κ΅μ΄", "μμ΄", "μν"};
/*
1. κ° νμμ νκ· μ μμμ 첫째 μ리κΉμ§ μΆλ ₯ν΄ λ³΄μΈμ.
2. κ° κ³Όλͺ©μ νκ· μ μΆλ ₯ν΄ λ³΄μΈμ.
3. λ° νκ· μ μΆλ ₯ν΄ λ³΄μΈμ. (λͺ¨λ νμλ€μ νκ· μ λν΄μ νμμλ‘ λλκΈ°)
*/
double totalAvg = 0.0; // νμλ€μ νκ· μ μμ μ΄ν©.
int idx = 0; //stuName λ°°μ΄μμ νμ μ΄λ¦μ μ§λͺ©ν μ©λ
for (int[] ints : score) {
int total = 0;
for (int i : ints) {
total += i;
}
double avg = (double) total / subName.length;
totalAvg += avg;
System.out.printf("%sμ νκ· : %.1fμ \n", stuName[idx], avg);
idx++;
}
System.out.println("==================================================");
for (int i = 0; i < subName.length; i++) {
int total = 0;
for (int j = 0; j < stuName.length ; j++) {
total += score[j][i];
}
double avg = (double) total / subName.length;
System.out.printf("%sμ νκ· μ μ: %.1fμ \n", subName[i], avg);
}
System.out.println("===================================");
double classAvg = totalAvg / stuName.length;
System.out.printf("μ°λ¦¬λ° νκ· : %.1fμ \n", classAvg);
7. λ©μλ (Method)
λ©μλλ λ°λ³΅λλ μ½λ λΈλ‘μ μ΄λ¦μ λΆμ¬ λμ κ²μ λ§νλ€.
λ°λ³΅λλ μ½λλ₯Ό μ€μ¬μ£Όκ³ , μ’ λ ꡬ쑰νλ₯Ό λ§λ€μ΄ μ½λμ κ°λ μ±μ λμ¬μ€λ€.
// λ©μλμ κΈ°λ³Έμ μΈ κ΅¬μ‘°
[리ν΄νμ
] [λ©μλλͺ
](λ§€κ°λ³μ) {
// λ©μλμ κΈ°λ₯ ꡬν
}
- λ¦¬ν΄ νμ : λ©μλκ° μ€ν ν λ°ννλ λ°μ΄ν° νμ μ μ€μ . (λ°νν κ°μ΄ μλ κ²½μ°μλ void)
- λ©μλλͺ : λ©μλμ μ΄λ¦μ μ€μ . μλ³μμ κ·μΉμλ§ λ§κ² μ§μ΄μ£Όλ©΄ λ¨.
- λ§€κ°λ³μ : λ©μλλ₯Ό μ€νν λ νμλ‘ νλ κ°μ λ°μ΄ν° νμ κ³Ό μ΄λ¦μ μ€μ . λ¬Όλ‘ λ§€κ°λ³μκ° μλ κ²½μ°μλ λΉμμ£Όλ©΄ λλ€.
- λ©μλμ κΈ°λ₯ ꡬν : λ©μλκ° μνν κΈ°λ₯μ ꡬννλ μ½λ λΈλ‘.
- λ©μλλ₯Ό μ μΈν λ, ν΄λμ€ λΈλ‘μ μ μΈν΄μΌ νλ€. (λ©μλ μμμλ λ©μλλ₯Ό μ μΈν μ μμ.)
- μ½λλ₯Ό μμ±νλ public static void main(String[] args)λ λ©μλμ΄λ€. μ¦, main μμλ λ©μλλ₯Ό μ μΈν μ μλ€.
public class Main {
// λ©μλ μ μΈ κ°λ₯
public static void main(String[] args) {
}
// λ©μλ μ μΈ κ°λ₯
}
public class MethodExample1 {
// λ©μλμ μ μΈ
static int calcTotal(int end) {
int total = 0;
for (int i = 1; i <= end; i++) {
total += i;
}
return total;
}
public static void main(String[] args) {
int total = calcTotal(10);
System.out.println(total);
System.out.println(calcTotal(100));
System.out.println(calcTotal(200));
System.out.println(calcTotal(300));
System.out.println(calcTotal(400));
System.out.println(calcTotal(500));
- λ©μλμ νΈμΆμ κ³§ λ©μλλ₯Ό μ¬μ©νκ² λ€λ κ²κ³Ό κ°μ λ§μ΄λ€.
- λ©μλκ° νμλ‘ νλ λ°μ΄ν°λ₯Ό νΈμΆλΆμμ μ λ¬νλ©΄
- κ·Έ κ°μ λ°μ λ©μλ λ΄λΆλ‘ μ λ¬νκ³ , λ‘μ§μ΄ μ€ν.
- μ€ν κ²°κ³Όκ°μ λ©μλλ₯Ό νΈμΆν κ³³μ λ€μ λ°ν
- λ³νλ κ°μ λ³μμ λ΄μμ μ μ₯νκ±°λ, μΆλ ₯νλ λ± λ€μνκ² μ¬μ©.
7 - 1. λ§€κ°λ³μ (parameter)
λ©μλλ₯Ό νΈμΆν λ, λ©μλ μ€νμ νμν κ°λ€μ λ©μλ λ΄λΆλ‘ μ λ¬νλ λ§€κ°μ²΄ μν μ νλ κ².
μ΄λ€ λ§€κ°μ²΄λ₯Ό μ λ¬νλλμ λ°λΌ λ©μλμ μ€ν κ²°κ³Όλ μΈμ λ μ§ λ¬λΌμ§ μ μμ.
()μμ 미리 κ°μμ νμ μ μ§μ ν¨. λ¬Όλ‘ νλλ μ μΈνμ§ μμ κ²½μ°μλ () λ΄λΆλ₯Ό λΉμμ νΈμΆ
// μΌλ°μ μΈ λ§€κ°λ³μ μ¬μ©
static int calcRangeTotal(int start, int end) {
int total = 0;
for (int i = start; i <= end; i++) {
total += i;
}
return total;
}
int result = calcRangeTotal(3, 7);
System.out.println("result = " + result);
// λ§€κ°λ³μ μμ κ²½μ°
static String selectRandomFood() {
double rn = Math.random();
if (rn > 0.66) {
return "μΉν¨";
} else if (rn > 0.33) {
return "μ‘±λ°";
}
return "νλ²κ±°";
}
String string = selectRandomFood();
System.out.println("μ€λ μ μ¬ λλ¨Ήμ§??: " + selectRandomFood());
// μ μ nκ°λ₯Ό μ λ¬νλ©΄ κ·Έ μ μλ€μ νκ· μ 리ν΄νλ λ©μλ (λ§€κ°λ³μμ λ°°μ΄μ λ£μ΄ ν΄κ²°νλ€.)
static double calcAverage(int[] nums) {
int total = 0;
for (double num : nums) {
total += num;
}
return (double) total / nums.length;
}
int[] arr = {30, 50, 70, 90, 12, 33};
double average = calcAverage(arr);
System.out.println("average = " + average);
// κ°λ³ νλΌλ―Έν°λ₯Ό μ¬μ©ν λ§€κ°λ³μ μμ±
// ...λ‘ λμ΄λμ΄ λ€μ΄μ€λ μ¬λ¬κ°μ κ°μ λ°°μ΄λ‘ λ¬Άμ΄μ λ©μλ λ΄λΆλ‘ μ λ¬ν©λλ€.
static double calcAverage2(int... nums) {
int total = 0;
for (double num : nums) {
total += num;
}
return (double) total / nums.length;
}
double average2 = calcAverage2(1, 2, 3, 4, 2, 2384, 23423, 435);
System.out.println("average2 = " + average2);
* μλ°λ λ°λμ λ§€κ°λ³μμ κ°μμ νμ μ λ§κ² μΈμλ₯Ό μ λ¬ν΄μΌ νλ€.
7 - 2. return
λ°νκ°μ΄λ, λ©μλμ μ€ν κ²°κ³Όκ°μ μλ―Έ.
μ¬λ¬ κ° μ‘΄μ¬ν μ μλ λ§€κ°λ³μμ λ¬λ¦¬, λ°νκ°μ μ€μ§ ν κ°λ§ μ‘΄μ¬ν΄μΌ νλ€.
returnμ΄λΌλ ν€μλλ₯Ό μ¬μ©νκ³ , returnλ€μ μ λ¬ν κ°μ μ§μ νλ€.
λ°νκ°μ΄ μλ λ©μλλ νΈμΆλ¬Έ μμ²΄κ° νλμ κ°μΌλ‘ μ²λ¦¬λ μ μκΈ° λλ¬Έμ λ°νκ°μ λ€λ₯Έ λ³μμ λμ νκ±°λ, λ€λ₯Έ λ©μλμ λ§€κ°κ°μΌλ‘λ μ²λ¦¬λ μ μμ.
static int add(int n1, int n2) {
return n1 + n2;
}
/////////////////////////////////////
int r1 = add(3, 8); //int r1 = 11;
int r2 = add(10, 15); //int r2 = 25;
// 리ν΄κ°μ΄ μλ λ©μλλ λ©μλ νΈμΆλ¬Έμ΄ κ³§ 리ν΄κ°μΌλ‘ μ²λ¦¬λ μ μκΈ° λλ¬Έμ,
// λ€λ₯Έ λ©μλμ λ§€κ°κ°μΌλ‘λ μ¬μ©μ΄ κ°λ₯.
int r3 = add(add(4,6), add(7,8)); // int r3 = add(10, 15) -> int r3 = 25
static int[] operateTotal(int n1, int n2) {
//return n1 + n2;
//return n1 - n2; νλμ λ©μλκ° μ¬λ¬ λ² λ¦¬ν΄ν μλ μλ€.
//μ¬λ¬κ°μ κ° λ¦¬ν΄νκ³ μΆμΌλ©΄ λ°°μ΄μ μΈμ 보λ΄μ
.
return new int[] {add(n1, n2), n1-n2, n1*n2, n1/n2};
}
// voidμΌ κ²½μ°μλ returnμ μλ΅ν΄λ λλ€.
// λ°νκ°μ΄ μλ void νμ
μ λ©μλλ κ°μ΄ λμμ€μ§ μκΈ° λλ¬Έμ
// μ€ν κ²°κ³Όλ₯Ό λ³μμ μ μ₯ν μ μμΌλ©°, λ€λ₯Έ λ©μλμ λ§€κ°κ°μΌλ‘λ μ¬μ©μ΄ λΆκ°λ₯. (λ°λμ λ¨λ
νΈμΆ μ¬μ©)
// voidλ©μλλ λ¨μν λμμ μ§μνλ μν μ μν.
static void multi(int n1, int n2) {
int result = n1 * n2;
System.out.printf("%d x %d = %d\n", n1, n2, result);
}
//////////////////////////////////////////////////
// int r4 = multi(10, 7); (x)
// System.out.println(multi(10, 7)); (x)
multi(10, 7);
multi(add(3,4), add(4,7));
// add(multi(4,4), multi(5,6)); (x)
// λͺ¨λ λ©μλλ returnμ λ§λλ©΄ κ°μ λ‘ λ©μλκ° μ’
λ£λ¨.
// λ°λΌμ 쑰건 μμ΄ returnλ¬Έ μλμ μ½λλ₯Ό μμ±ν μ μμ.
// voidλ©μλμμλ returnν€μλλ₯Ό νμΆ κΈ°λ₯μΌλ‘ μ¬μ©μ΄ κ°λ₯.
static void divide(int n1, int n2) {
if(n2 == 0) {
System.out.println("0μΌλ‘ λλμ§ λ§μΈμ!");
return;
}
int result = n1 / n2;
System.out.printf("%d / %d = %d\n", n1, n2, result);
}
8. κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°
κ°μ²΄λ, λ°μ΄ν°μ κ·Έ λ°μ΄ν°λ₯Ό μ²λ¦¬νλ ν¨μλ€μ λ¬Άμ΄λμ νλμ λ 립μ μΈ λ¨μ.
μ΄λ κ² νλμ λ¨μλ‘ λ¬Άμ΄ λμΌλ©΄ μ½λμ κ°λ μ±μ΄ μ’μμ§κ³ , μ μ§ λ³΄μκ° νΈλ¦¬νμ¬ λκ·λͺ¨ νλ‘κ·Έλ¨μ κ°λ°ν λ μ μ©ν¨.
//λΉ¨κ° ν
int redPenPrice = 500;
String redPenColor = "λΉ¨κ°";
String redPenNo = "a001";
//νλ ν
int bluePenPrice = 800;
String bluePenColor = "νλ";
String bluePenNo = "a002";
//κ²μ ν
int blackPenPrice = 1000;
String blackPenColor = "κ²μ ";
String blackPenNo = "a003";
void redPenWrite() {
System.out.println("λΉ¨κ° νμΌλ‘ κΈμ¨λ₯Ό μλλ€.");
}
void redPenDraw() {
System.out.println("λΉ¨κ° νμΌλ‘ κ·Έλ¦Όμ 그립λλ€.");
}
void redPenInfo() {
System.out.println("μ νλ²νΈ: " + redPenNo);
System.out.println(redPenColor + "μ νμ κ°κ²©μ " + redPenPrice + "μ μ
λλ€.");
}
////////////////////////////////////////////////////
void bluePenWrite() {
System.out.println("νλ νμΌλ‘ κΈμ¨λ₯Ό μλλ€.");
}
void bluePenDraw() {
System.out.println("νλ νμΌλ‘ κ·Έλ¦Όμ 그립λλ€.");
}
void bluePenInfo() {
System.out.println("μ νλ²νΈ: " + bluePenNo);
System.out.println(bluePenColor + "μ νμ κ°κ²©μ " + bluePenPrice + "μ μ
λλ€.");
}
- μ΄ μ½λλ νλ¦° κ²μ μμ§λ§, λͺ κ°μ λΆνΈν μ μ΄ μλ€.
- νμ μμ±λ€κ³Ό κΈ°λ₯λ€μ΄ λμΌνμ§λ§, ꡬλΆμ μν΄μ μΌμΌν λ€λ₯Έ λ³μ μ΄λ¦μ μ¬μ©νκ³ , λ©μλ μ΄λ¦λ λ€λ₯΄κ² μ§μ .
- μ§κΈ νμ¬ νμ κ°μκ° 3κ° λ°μ μλμ§λ§, κ³μν΄μ μΆκ°κ° λλ€λ©΄ λ³μμ λ©μλλ€μ΄ κΈ°νκΈμμ μΌλ‘ λμ΄λ κ²μ΄λ€.
- λ§μ½ κ°μ μμμ νμ΄ λ κ°λΌλ©΄, κ·Έ λ νμ ꡬλΆνκΈ° μν΄ λ λ€λ₯Έ λ³μ μ΄λ¦κ³Ό λ©μλ μ΄λ¦μΌλ‘ λκ°μ μμ± λ° κΈ°λ₯μΌλ‘ ννν΄μΌ ν¨.
- μ΄ λΆνΈν μ μ ν΄κ²°νκΈ° μν΄μλ "μ€κ³λ"λ₯Ό λ§λ€κ³ μ°μ΄λ΄λ©΄ λλ€!
//κ°μ²΄ μ€κ³μ© ν΄λμ€(λΌμ΄λΈλ¬λ¦¬ ν΄λμ€)λ λ©μΈ λ©μλλ₯Ό μμ±νμ§ μμ΅λλ€.
public class Pen {
//κ°μ²΄μ μμ±μ νλ(λ©€λ²λ³μ)λΌκ³ λΆλ¦
λλ€.
String color;
int price;
String productNo;
//κ°μ²΄μ κΈ°λ₯μ λ©μλλΌκ³ ν©λλ€.
void write() {
System.out.println(color + "μ κΈμ μλλ€.");
}
void draw() {
System.out.println(color + "μ κ·Έλ¦Όμ 그립λλ€.");
}
void priceInfo() {
System.out.println("μ νλ²νΈ: " + productNo);
System.out.println(color + "μ νμ κ°κ²©μ "
+ price + "μ μ
λλ€.");
}
}
- μ΄λ κ² μ€κ³λλ₯Ό μμ±νμ§λ§, μ΄κ²λ§ κ°μ§κ³ λ 무μλ ν μ μλ€.
- λ°λΌμ μ€λ¬Όμ λ§λ€κΈ° μν΄, MainClassλ₯Ό νλ μ μν΄μ κ°μ²΄λ₯Ό μμ±ν΄μΌνλ€.
Pen redpen = new Pen();
Pen bluepen = new Pen();
System.out.println("redpen = " + redpen);
System.out.println("bluepen = " + bluepen);
redpen.color = "red";
redpen.price = 2500;
bluepen.color = "blue";
bluepen.price = 600;
redpen.write();
redpen.priceInfo();
bluepen.write();
bluepen.priceInfo();
9. νλμ μ§μλ³μ, μ°Έμ‘°κ°κ³Ό λ¬Έμμ΄ equals()
- κ°μ λ³μμ΄μ§λ§, μ΄λμ μ μΈλμλμ λ°λΌ νλ λλ μ§μλ³μλΌλ μ΄λ¦μ΄ λΆκ²λλ©° κ·Έ λμ νΉμ§μ μ°¨μ΄κ° μμ.
- μ μΈ μμΉμ λ²μ
- νλ : ν΄λμ€ λ΄λΆμ μ μΈ, ν΄λΉ ν΄λμ€μ λͺ¨λ λ©μλμμ μ κ·Όμ΄ κ°λ₯
- μ§μ λ³μ : λ©μλλ λΈλ‘ λ΄λΆμ μ μΈ, ν΄λΉ μμ λ΄μμλ§ μ κ·Ό κ°λ₯
- μ΄κΈ°ν μ¬λΆ
- νλ : μ΄κΈ°κ°μ΄ μ§μ λμ§ μμΌλ©΄ κΈ°λ³Έκ°μΌλ‘ μλ μ΄κΈ°ν
- μ§μ λ³μ : λ°λμ μ΄κΈ°νκ° λμ΄μΌ νλ€. μ΄κΈ°νλμ§ μμ μ§μ λ³μλ μ¬μ©ν μ μμ.
- λ©λͺ¨λ¦¬ ν λΉ μμΉ
- νλ : κ°μ²΄κ° μμ±λ λλ§λ€ κ°κ°μ κ°μ²΄λ§λ€ λ 립μ μΈ λ©λͺ¨λ¦¬ 곡κ°μ ν λΉ.
- μ§μ λ³μ : ν΄λΉ λ³μκ° μ μΈλ λΈλ‘μ΄ μ€νλ λλ§λ€ μ€ν λ©λͺ¨λ¦¬μ ν λΉλλ©°, λΈλ‘μ΄ μ’ λ£λλ©΄ ν λΉλ λ©λͺ¨λ¦¬κ° ν΄μ²΄
public class FieldVariable {
int a; // field
/*
- μ§μ λ³μλ λ°λμ μ΄κΈ°νκ° λμ΄ μμ΄μΌ μ°Έμ‘°κ° κ°λ₯ν©λλ€.
- νλλ μ΄κΈ°νλ₯Ό νμ§ μμλ μλμΌλ‘ κ° νμ
μ κΈ°λ³Έκ°μΌλ‘ μ΄κΈ°νλ©λλ€.
- λ§€κ° λ³μλ λ©μλ νΈμΆμ κ°μ λ‘ κ°μ΄ λμ
λλ―λ‘ λ°λ‘ μ΄κΈ°νν νμκ° μμ΅λλ€.
*/
void m1(int c) { // c: parameter -> λ§€κ°λ³μλ μΌμ’
μ μ§μ λ³μ.
int b = 1; // local variable
System.out.println("a = " + a);
System.out.println("b = " + b);
System.out.println("c = " + c);
}
public static void main(String[] args) {
FieldVariable fv = new FieldVariable();
fv.m1(10);
System.out.println(fv.a);
}
}
9 - 1. λ¬Έμμ΄ λλ± λΉκ΅ equals()
- λ¨Όμ λ¬Έμμ΄ Stringμ κΈ°λ³Έ λ°μ΄ν° νμ μ΄ μλ κ°μ²΄ νμ .
- λ°λΌμ λ κ°μ λ¬Έμμ΄μ λΉκ΅ν λλ κ°μ²΄κ° κ°μ§κ³ μλ λλ±μ±μ λΉκ΅ν΄μΌ νλ€. μ΄λ₯Ό μν΄μλ "==" λμ equals()λ©μλλ₯Ό μ¬μ©.
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true
String s1 = "hello";
String s2 = new String("hello");
System.out.println(s1 == s2); // false
- μμ μ½λ λΉκ΅κ°μ΄ μλ‘ λ€λ₯Έ μ΄μ
- κΈ°λ³Έ νμ μ²λΌ λ¬Έμμ΄μ μ μΈνκ² λλ©΄ λ¬Έμμ΄ μμ νμ΄λΌλ κ³³μ μ μ₯λ¨.
- κ·Έλ¦¬κ³ λμ, μλ‘μ΄ λ³μμ κΈ°λ³Έ νμ μ²λΌ λ¬Έμμ΄μ μ μ₯νκ² λ λ, κΈ°μ‘΄μ μ΄λ―Έ μ‘΄μ¬νλ λ¬Έμμ΄μ μ μ₯νλ €κ³ μλνλ©΄, μ΄λ―Έ μμ νμ μ‘΄μ¬νλ λ¬Έμμ΄μ μ¬μ¬μ©νκ² λλ€.
- νμ§λ§ new String();μ²λΌ λ¬Έμμ΄μ μμ±νκ² λλ©΄, μμνμ μ‘΄μ¬νλ κ²μ μ¬νμ©νλ κ²μ΄ μλ μλ‘μ΄ λ¬Έμμ΄ κ°μ²΄λ₯Ό μμ±νκ² λλ€. λ°λΌμ μ£Όμκ°μ΄ λ€λ₯΄λ€κ³ λμ΄.
- λ°λ©΄ equals() λ©μλλ 2κ°μ κ°μ²΄μ λ΄μ©μ΄ κ°μμ§λ₯Ό λΉκ΅νλ€. λ§ κ·Έλλ‘ κ°μ²΄λ€μ΄ κ°μ§κ³ μλ λ¬Έμμ΄ μ체λ₯Ό λΉκ΅νκ² λλ κ².
String s1 = "hello";
String s2 = "hello";
System.out.println(s1.equals(s2)); // true
String s3 = new String("hello");
System.out.println(s1.equals(s3)); //true
10. μμ±μ
μμ±μλ κ°μ²΄λ₯Ό μμ±νλ μν μ ν΄μ£Όλ κ².
- νΉμ§
- μμ±μμ μ΄λ¦μ ν΄λμ€μ μ΄λ¦κ³Ό λ/μλ¬ΈμκΉμ§ μλ²½νκ² λμΌν΄μΌ νλ€.
- κ°μ²΄λ₯Ό μμ±ν λ, λ°λμ νΈμΆ
- μΌμ’ μ λ©μλμ§λ§, λ¦¬ν΄ νμ μ΄ μκ³ λ¦¬ν΄κ°μ μ£Όμκ°μΌλ‘ κ³ μ λμ΄ μμ.
- μμ±μλ₯Ό νλλ μ μΈνμ§ μμ κ²½μ°, κΈ°λ³Έ μμ±μ νλ μμ±ν΄μ£ΌκΈ° λλ¬Έμ μμ±μ μ μΈ μμ΄ κ°μ²΄ μμ±μ΄ κ°λ₯.
- κ°μ²΄λ₯Ό μμ±νλ κΈ°λ₯ λΏλ§ μλλΌ, κ°μ²΄ μμ±κ³Ό λμμ ν΄μΌ ν μΌ λ±μ μ§νν μ μμ.
public class Phone {
String model;
String color;
int price;
// μμ±μλ₯Ό μ μΈνμ§ μμΌλ©΄ κ°μ₯ κΈ°λ³Έ ννμ μμ±μλ₯Ό νλ λ§λ€μ΄μ€λ€.
Phone() {
// μ΄κ² κ°μ₯ κΈ°λ³Έ ννμ μμ±μμ΄λ€.
// ν΄λμ€μ μ΄λ¦μ΄ λμΌνκ³ , λ¦¬ν΄ νμ
μ΄ μ‘΄μ¬νμ§ μλλ€.
}
Phone() {
System.out.println("κΈ°λ³Έ μμ±μ νΈμΆ");
model = "ν΄λν°";
color = "νμ";
price = 200000;
// μ΄λ κ² κΈ°λ³Έ μμ±μμ μ½λλ₯Ό μΆκ°ν΄μ€ μ μλ€.
}
/*
# μμ±μ μ€λ²λ‘λ© (μ€λ³΅ μ μΈ)
1. μμ±μλ μ€λ³΅ν΄μ μ¬λ¬ κ° μ μΈμ΄ κ°λ₯ν©λλ€.
2. λ¨, μμ±μμ λ§€κ°λ³μμ νμ
, κ°μ, μμ μ€ νλκ° λ¬λΌμΌ
μ€λ³΅μ μΈμ ν©λλ€.
*/
Phone(String pModel) {
System.out.println("2λ² μμ±μ νΈμΆ");
model = pModel;
color = "while";
price = 100000;
}
Phone(String pModel, String pColor) {
System.out.println("3λ² μμ±μ νΈμΆ");
model = pModel;
color = pColor;
price = 120000;
}
}
- μμ±μλ₯Ό νΈμΆν¨μΌλ‘μ¨ κ°μ²΄λ₯Ό μμ±ν μ μμΌλ©°, μμ±μκ° μ¬λ¬ κ° μ‘΄μ¬νλ€λ©΄ μνλ λλ‘ κ³¨λΌμ νΈμΆνλ κ²μ΄ κ°λ₯νλ€.
public class Main {
public static void main(String[] args) {
Phone basic = new Phone();
basic.showSpec();
System.out.println("================");
Phone galaxy = new Phone("κ°€λμ s25");
galaxy.showSpec();
System.out.println("=================");
Phone iPhone = new Phone("μμ΄ν° 16", "μ€νμ΄μ€ κ·Έλ μ΄");
iPhone.showSpec();
}
}
* κΈ°λ³Έ μμ±μ μμ΄ λ§€κ°κ°μ λ°λ μμ±μλ§ μ μΈν΄ λμμ κ²½μ°μλ κ·Έ μμ±μλ§μ μ¬μ©ν΄μ κ°μ²΄λ₯Ό μμ±ν μ μμ. (κΈ°λ³Έ μμ±μλ₯Ό νΈμΆν΄μ κ°μ²΄λ₯Ό μμ±ν μ μμ.)
* μ΄ λ§μ μλ°κ° μμ±μλ₯Ό μλμΌλ‘ μ μΈν΄μ£Όλ κ²½μ°λ μμ±μλ₯Ό λ¨ νλλ μ μΈνμ§ μμμ κ²½μ°λΏμ΄λ€.
11. ν¨ν€μ§
λΉμ·ν μ±κ²©μ κ°μ§ μλ° ν΄λμ€λ μΈν°νμ΄μ€λ€μ λͺ¨μ λμ μλ°μ λλ ν 리μ΄λ€.
- νΉμ§
- ν¨ν€μ§λ₯Ό λ§λ€μ΄μ ν΄λμ€μ λ°°μΉνλ©΄, ν΄λμ€ μ΅ μλ¨μ ν¨ν€μ§ κ΅¬λ¬Έμ΄ ν¬ν¨.
- ν¨ν€μ§ μ΄λ¦μ μλ¬Έμλ‘ μ§μ΄μ£Όλ κ²μ΄ κ΄λ‘.
- μμ ν¨ν€μ§μ νμ ν¨ν€μ§λ₯Ό ꡬλΆν λλ .(dot)μ μ¬μ©.
- ν¨ν€μ§ μ΄λ¦μ μ ν λλ μλ³μ κ·μΉμ΄ μ μ©λ¨.
//ν¨ν€μ§ λ΄μ ν΄λμ€λ₯Ό μμ±νλ©΄ ν΄λμ€ μ΅μλ¨μ ν¨ν€μ§ μ μΈλ¬Έμ΄ μΆκ°λλ€.
package fruit;
public class Apple {
public Apple() {
System.out.println("μκ³ΌμΌ μ¬κ³Ό μ
λλ€.");
}
}
package fruit;
public class Banana {
}
package fruit;
public class Grape {
}
fruitλΌλ 3κ°μ ν΄λμ€λ₯Ό μ μΈ
package syrup;
public class Apple {
public Apple() {
System.out.println("μ¬κ³Ό μλ½ μ
λλ€.");
}
}
// μ΄λ―Έ Appleμ΄λΌλ ν΄λμ€κ° μ‘΄μ¬νμ§λ§, ν¨ν€μ§κ° μλ‘ λ€λ₯΄κΈ° λλ¬Έμ
// λμΌν μ΄λ¦μΌλ‘ ν΄λμ€λ₯Ό λ§λ€μ΄λ ꡬλΆμ΄ λλ€.
package test;
//ν¨ν€μ§ μΈλΆμ μλ ν΄λμ€λ import μ μΈμ ν΅ν΄ μ 보λ₯Ό λΆλ¬ μμΌ μ¬μ©μ΄ κ°λ₯νλ€.
//import fruit.Apple;
//import fruit.Banana;
//import fruit.Grape;
//fruit ν¨ν€μ§ λ΄μ λͺ¨λ ν΄λμ€λ₯Ό import νκ² λ€λ μ μΈλ¬Έ.
import fruit.*;
public class Test {
public static void main(String[] args) {
//ν¨ν€μ§κ° λ€λ₯΄κ³ μ΄λ¦μ΄ λμΌν ν΄λμ€μ κ°μ²΄λ₯Ό μμ±ν λλ
//ν¨ν€μ§ ν κ²½λ‘λ₯Ό λͺ¨λ μ¨ μ£Όμ΄μΌ ꡬλΆμ΄ λλ€.
Apple apple = new Apple();
syrup.Apple a2 = new syrup.Apple();
new Banana();
new Grape();
//import μ μΈμ νμ§ μμΌλ©΄ ν¨ν€μ§ κ²½λ‘λ₯Ό λͺ¨λ μμ±ν΄μΌ νλ€.
//java ν¨ν€μ§ λ΄μ utilμ΄λΌλ ν¨ν€μ§ λ΄μ μλ Scanner ν΄λμ€.
new java.util.Scanner(System.in);
}
}
12. this
νμ¬ κ°μ²΄λ₯Ό μ°Έμ‘°νλ ν€μλλ‘, ν΄λμ€ λ΄μμ μκΈ° μμ μ μΈμ€ν΄μ€ λ³μλ₯Ό μ°Έμ‘°ν λ μ¬μ©.
μ΄ ν€μλλ₯Ό μ¬μ©νλ©΄, λ©μλ λ΄μμ λ‘컬 λ³μμ μΈμ€ν΄μ€ λ³μλ₯Ό ꡬλΆν μ μμ.
public class Player {
String name; // λλ€μ
int level; // λ 벨
int hp; // 체λ ₯
// μμ±μ
Player() {
System.out.println("1λ² μμ±μ νΈμΆ!");
name = "μ΄λ¦μμ";
level = 1;
hp = 50;
}
Player(String name) {
System.out.println("2λ² μμ±μ νΈμΆ!");
name = name; //λ¬Έμ κ° λ°μνλ μ½λ
level = 1;
hp = 50;
}
......
}
///////////////////////////////////////////////////////////////////
Player p2 = new Player("νλ μ΄μ΄2");
System.out.println(p2.name); // null!;
- μ μ½λμμ κ°μ΄ μ λλ‘ μ λ¬λμ§ λͺ»ν μ΄μ λ νλμ nameκ³Ό μμ±μμ λ§€κ°λ³μ nameμ΄ μ΄λ¦μ΄ λμΌνκΈ° λλ¬Έμ΄λ€. (λ λ€ μμ±μλ΄μμ λ§€κ°λ³μλ₯Ό μ°μ μ μ¬κ²¨, μ½λκ° μ΄μν΄μ§λ€.)
- λ°λΌμ λ§€κ°λ³μ nameκ³Ό νλ nameμ ꡬλΆν μ μκ² thisλ₯Ό μ¬μ©νλ©΄ λλ€.
Player(String name) {
System.out.println("2λ² μμ±μ νΈμΆ!");
this.name = name; //thisκ° κ°μ§λ μ£Όμκ°μ μ΄ μμ±μλ₯Ό λΆλ₯Έ κ°μ²΄μ μ£Όμκ°μ΄ λλ€.
level = 1;
hp = 50;
}
///////////////////////////////////////////////////////////////////
Player p2 = new Player("νλ μ΄μ΄2");
System.out.println(p2.name); // νλ μ΄μ΄2;
Player p3 = new Player("νλ μ΄μ΄3");
System.out.println(p3.name); // νλ μ΄μ΄3;
- thisλ μμ±μλ λ©μλλ₯Ό νΈμΆν κ·Έ κ°μ²΄μ μ£Όμκ°κ³Ό λμΌν μ£Όμκ°μ κ°κ² λλ€.
12 - 1. this() λ₯Ό μ΄μ©νμ¬ μμ±μ νΈμΆνκΈ°
- thisλ₯Ό μ¬μ©νλ©΄ κ°μ ν΄λμ€ λ΄μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆν μ μλ€.
Player() {
System.out.println("1λ² μμ±μ νΈμΆ!");
name = "μ΄λ¦μμ";
level = 1;
hp = 50;
}
Player(String name) {
System.out.println("2λ² μμ±μ νΈμΆ!");
this.name = name;
level = 1;
hp = 50;
}
- μ¬κΈ°μμ levelμ 1λ‘, hpλ₯Ό 50μΌλ‘ μ΄κΈ°ν ν΄μ£Όλ κ²μ λ μμ±μκ° λμΌνλ€.
- λμ€μ λ©€λ² λ³μ λλ μμ±μ μκ° λ§μμ§λ©΄, κ·Έλ§νΌ μ€λ³΅μ΄ λ§μμ Έ μΈλ°μμ΄ μ½λκ° κΈΈμ΄μ§λ€. κ·Έλ¬λ―λ‘ this()λ‘ λ΄ λ€λ₯Έ μ€λ³΅ μμ±μλ₯Ό λΆλ¬ μ£Όλ κ²μ΄ μ’λ€.
Player() {
System.out.println("1λ² μμ±μ νΈμΆ!");
name = "μ΄λ¦μμ";
level = 1;
hp = 50;
}
Player(String name) {
this();
System.out.println("2λ² μμ±μ νΈμΆ!");
this.name = name;
}
Player(String name, int hp) {
this(name); //nameμ λ§€κ°κ°μΌλ‘ λ°λ μμ±μ νΈμΆ!
System.out.println("3λ² μμ±μ νΈμΆ!");
this.hp = hp;
}
//////////////////////////////////////////////////////////////////
Player p1 = new Player("νλ μ΄μ΄1");
System.out.println(p1.name); // νλ μ΄μ΄1
System.out.println(p1.level); // 1
System.out.println(p1.hp); // 50
* μμ μ λ€λ₯Έ μμ±μλ₯Ό νΈμΆνλ μ½λλ λ°λμ μμ±μμ μ΅μλ¨μ μμΉν΄μΌ νλ€.
* μμ±μ λλ λ©μλ λ΄μμ νλκ°μ μ°Έμ‘°ν λ, κΈ°λ³Έμ μΌλ‘ "this."μ΄ μλ΅λμ΄ μλ€.
13. μ κ·Ό μ νμ
ν΄λμ€/νλ/λ©μλ/μμ±μμ λν μ κ·Ό κΆνμ μ ννλ ν€μλ
- μ κ·Ό μ νμμ μ’ λ₯
- public : μ΄λ€ ν΄λμ€μμλ μ κ·Ό κ°λ₯ν μ΅λνμ λ²μ. λ€λ₯Έ ν¨ν€μ§μμλ μ κ·Όμ΄ κ°λ₯. μ¦, μ κ·Ό μ ν μμ²΄κ° μλ κ²½μ°μ΄λ€.
- protected : κ°μ ν¨ν€μ§μμλ λͺ¨λ ν΄λμ€μμ μ κ·Ό κ°λ₯. λ€λ₯Έ ν¨ν€μ§μ κ²½μ° μμλ°μ μμ ν΄λμ€μμλ§ μ κ·Ό κ°λ₯.
- default (μλ¬΄λ° μ κ·Ό μ νμλ₯Ό μ¬μ©νμ§ μμ) : κ°μ ν¨ν€μ§ λ΄μμλ§ μ κ·Όμ΄ κ°λ₯νκ³ , λ€λ₯Έ ν¨ν€μ§μμλ μ κ·Όμ΄ λΆκ°λ₯νλ€.
- private : κ°μ ν΄λμ€ λ΄μμλ§ μ κ·Ό κ°λ₯. λ€λ₯Έ ν΄λμ€μμ μ κ·Όν μ μλ€. (κ°μ₯ νμμ μΈ μ νμ)
- μ κ·Ό μ νμλ₯Ό μ¬μ©νμ¬, ν΄λμ€/λ³μ/λ©μλ λ±μ λ©€λ²μ λν μ κ·Ό λ²μλ₯Ό μ νν¨μΌλ‘μ¨ μ½λμ μμ μ±μ λμΌ μ μμ.
- μ¬μ©μκ° μ νμ μλ, λλ μμμλ μλλ μ 보λ€μ μ¨κ²¨μ£Όκ±°λ λ³κ²½ν μ μμ΄μΌ νλ€.
* classμ κ²½μ°, public / default μ νμλ§ λ€μ΄κ° μ μμ. (privateκ³Ό protectedλ μ¬μ© λΆκ°λ₯)
14. μ 보 μλκ³Ό μΊ‘μν
14 - 1. μ 보 μλ
κ°μ²΄μ μνλ₯Ό μ¨κΈ°κ³ , μΈλΆμμ μ κ·Όν μ μλλ‘ λ³΄νΈνλ κ²μ μλ―Έ.
μ 보 μλμ μ¬μ©νμ§ μμΌλ©΄, κ°μ²΄ νλμ λΆνμν κ°μ΄λ λ¬Έμ κ° λ°μν μ μλ κ°λ€μ΄ λ€μ΄μ€λ κ²μ λ§μ μ μμ.
public class MyBirth {
int year;
int month;
int day;
void birthInfo() {
System.out.printf("λ΄ μμΌμ %dλ
%dμ %dμΌ μ
λλ€.\n"
, this.year, this.month, this.day);
}
}
public class Main {
public static void main(String[] args) {
MyBirth birth = new MyBirth();
birth.year = 200051;
birth.month = -394;
birth.day = 13444;
birth.birthInfo();
}
}
- μ μ½λλ μ 보 μλμ΄ κ΅¬νλμ΄ μμ§ μλ€. κ·Έλμ μμΌ λ /μ/μΌμ μ ν΄μ§ λ²μλ₯Ό λμ΄μλ μ«μ, μ¬μ§μ΄λ μμλ₯Ό λ£μ΄λ μ½λκ° λμνλ€. μ΄λ¬ν κ²μ λ§κΈ° μν΄ μ 보 μλμ΄ νμμ μ΄λ€.
public class MyBirth {
// μΈλΆμμ λ³μμ μ§μ μ κ·Όν μ μλλ‘ νλμ private μ νμ λΆμ.
private int year;
private int month;
private int day;
public void setYear(int year) {
if (year < 1900 || year > 2025) {
return;
}
this.year = year;
}
public void setMonth(int month) {
if (month < 1 || month > 12) {
System.out.println("μλͺ»λ μ κ·Όμ
λλ€.");
return;
}
this.month = month;
}
public void setDay(int day) {
if (day < 1 || day > 31) {
System.out.println("μλͺ»λ μ κ·Όμ
λλ€.");
} else {
if (this.month == 0) {
System.out.println("μΌμλ₯Ό μ
λ ₯νκΈ° μν΄μλ μ μ
λ ₯μ΄ μ νλμ΄μΌν©λλ€.");
return;
}
if (!isValidateMonth(day)) {
System.out.println("μμ λ°λ₯Έ μΌμκ° μ¬λ°λ₯΄μ§ μμ΅λλ€.");
return;
} else {
this.day = day;
}
}
}
void birthInfo() {
if (year == 0 || month == 0 || day == 0) {
System.out.println("λ μ§ νλ μ€μ μ΄κΈ°νλμ§ μμ λ°μ΄ν°κ° μμ΅λλ€.");
return;
}
System.out.printf("λ΄ μμΌμ %dλ
%dμ %dμΌ μ
λλ€.\n", this.year, this.month, this.day);
}
public int getYear() {
return year;
}
public int getMonth() {
return month;
}
public int getDay() {
return day;
}
// κ° μμ μ ν©ν μΌμκ° μΈν
λμ΄ μλμ§λ₯Ό νλ³νλ λ©μλ
private boolean isValidateMonth(int day) {
switch (this.month) {
case 2:
if (day > 28) return false;
case 4, 6, 9, 11:
if (day > 30) return false;
default:
return true;
}
}
- λͺ¨λ νλλ₯Ό privateμΌλ‘ μ§μ νμ¬ μΈλΆλ‘λΆν°μ μ κ·Όμ λ§μ, μ 보λ₯Ό 보νΈν μ μμ§λ§, λ°μ΄ν° μ κ·Ό μμ²΄κ° νλ€μ΄μ§λ€.
- λ°λΌμ λ°μ΄ν°μ μ ν¨μ±μ κ²μ¦ν μ μλ μ μ΄λ¬Έμ΄ ν¬ν¨λ λ©μλλ₯Ό μ΄μ©νμ¬ λ°μ΄ν°μ μ κ·Όμ νμ©νλλ‘ μ€κ³νλλ°, μ΄ λ μ¬μ©λλ κ²μ΄ getter / setter λ©μλλΌκ³ λΆλ₯Έλ€.
- setter λ©μλλ μ¨κ²¨μ§ λ³μμ κ°μ μ μ₯νκΈ° μν λ©μλλ‘ λ΄λΆμ λ°μ΄ν° μ ν¨μ± κ²μ¦ λ‘μ§μ μμ±νμ¬ μ μ ν λ°μ΄ν°λ§ μ μ₯μν¨λ€. (λ©μλ μ΄λ¦μ μΌλ°μ μΌλ‘ set + νλμ΄λ¦μΌλ‘ μ€μ .)
- getter λ©μλλ μ¨κ²¨μ§ λ³μμ κ°μ μ°Έμ‘°ν λ μ¬μ©νλ λ©μλλ‘, setterλ©μλμ λ§μ°¬κ°μ§λ‘ public μ νμ λμ΄ μΈλΆμ 곡κ°ν¨. (μΌλ°μ μΌλ‘ get + νλμ΄λ¦μΌλ‘ μ€μ .)
* boolean νμ νλμ getter λ©μλλ getμ΄ μλ, isλ‘ μμνλ κ²μ΄ κ΄λ‘μ΄λ€.
public boolean isYear() {
return year;
}
14 - 2. μΊ‘μν
κ°μ²΄μ μνμ λμμ νλμ λ¨μλ‘ λ¬Άμ΄μ ꡬννλ κ².
μ¦, νλμ λͺ©μ μ μ΄λ£¨κΈ° μν΄ κ΄λ ¨ μλ λͺ¨λ κ²λ€μ νλμ μΊ‘μμ λ΄μ λλ κ²μ μλ―Έν¨.
// μλ κ±°λ κΈ°λ₯
public void engineStart() {
System.out.println("μλ λ²νΌμ λλ μ΅λλ€.");
System.out.println("μλμ΄ κ±Έλ Έμ΅λλ€.");
}
// μμ§μ μ°λ£κ° μ£Όμ
λλ κΈ°λ₯
private void injectGasoline() {
System.out.println("μ°λ£κ° μμ§μ μ£Όμ
λ©λλ€.");
}
// μμ§μ€μΌμ΄ μ£Όμ
λλ κΈ°λ₯
private void injectOil() {
System.out.println("μμ§ μ€μΌμ΄ μνν©λλ€.");
}
// μ€λ¦°λκ° μμ§μ΄λ κΈ°λ₯
private void moveCylinder() {
if (start) {
System.out.println("μ€λ¦°λκ° μμ§μ
λλ€.");
} else {
System.out.println("μ°¨κ° κ³ μ₯λ¬μ΅λλ€.");
}
}
// μλ κ±°λ κΈ°λ₯
public void engineStart() {
System.out.println("μλλ²νΌμ λλ μ΅λλ€.");
injectOil();
injectGasoline();
this.start = true;
moveCylinder();
System.out.println("μλμ΄ κ±Έλ Έμ΅λλ€.");
}
- μΊ‘μνλ₯Ό ν΅ν΄ μ¬μ©μ μͺ½μμ μ’ λ κ°κ²°ν λ¬Έλ²μΌλ‘ κ°μ²΄λ₯Ό λμμν¬ μ μλ νΈμμ±μ΄ μλ€.
- λν, λ΄λΆ λ‘μ§μ΄ λ³κ²½λλλΌλ μΈλΆ μ½λμλ μν₯μ λ―ΈμΉμ§ μλλ‘ μ€κ³λκΈ° λλ¬Έμ μ μ§ λ³΄μμ νΈμμ±μ΄ μ¦κ°νλ€.
15. μμ
λΆλͺ¨ ν΄λμ€κ° κ°μ§ μμ±κ³Ό κΈ°λ₯μ μμ ν΄λμ€κ° λ¬Όλ €λ°λ κ².

- μ μ½λλ λΆνΈν μ μ΄ λͺ κ°μ§κ° μ‘΄μ¬νλ€.
- κ°κ° ν΄λμ€λ λ€λ₯΄μ§λ§ κ°μ§κ³ μλ μμ±κ³Ό κΈ°λ₯μ΄ μλ‘ λΉμ·ν κ²μ μ°Ύμλ³Ό μ μμ.
- μ΄ μν©μμ λλ¬Ό ν΄λμ€λ₯Ό λ μΆκ°νλ€λ©΄ ν΄λμ€λ₯Ό λ μμ±νκΈ°κ° νλ¬.

- μ΄κ²μ μμ μ½λλ₯Ό μμνν΄μ λ§λ κ²μ΄λ€.
- λΆλͺ¨ ν΄λμ€μΈ Animal ν΄λμ€λ κΈ°μ‘΄ Dog / Cat / Monkey / Dolphinμ΄ κ°μ§κ³ μλ μμ± λ° κΈ°λ₯μ λͺ¨λ λͺ¨μλμ ν΄λμ€λ‘ μμ±.
- κ·Έλ¦¬κ³ λλ¨Έμ§ λλ¬Ό ν΄λμ€κ° Animal ν΄λμ€λ₯Ό μμλ°λ νμμΌλ‘ ꡬμΆ
- μ΄λ κ² μμ±νλ©΄ μ€λ³΅λλ μμ± λ° κΈ°λ₯μ μΌμΌν μμ±ν νμκ° μμΌλ©° κ°κ°μ΄ κ°μ§λ κ³ μ ν μμ±λ€λ§μ ν΄λμ€μ μΆκ°νμ¬ κ°λ νμ₯κ°λ₯.
15 - 1. μμ μ 리
- λ¨μΌ μμ λ§μ μ§μνλ€. (λΆλͺ¨λ νλͺ μ΄μ΄μΌ νλ€.)
* μ λ€μ€ μμμ λμ§ μλκ°?
(death of diamond)

μ κ·Έλ¦Όμμ B, C ν΄λμ€λ Aμ ν΄λμ€λ₯Ό μμλ°λ μμ ν΄λμ€μ΄λ€.
κ·Έλ¦¬κ³ Dν΄λμ€λ B, C ν΄λμ€μκ² μμλ°λλ€.
μ΄ λ, B, C ν΄λμ€μ μ‘΄μ¬νλ Aν΄λμ€λ₯Ό μ€λ³΅μΌλ‘ μμλ°κ² λμ΄ μ€λ₯κ° λ°μν μ μλ€.
- μ΄λ€ ν΄λμ€κ° λ€λ₯Έ ν΄λμ€λ‘λΆν° μμμ λ°μ λ§λ€μ΄μ§λ©΄ μλ‘κ² λ§λ€μ΄μ§ ν΄λμ€λ₯Ό μμ ν΄λμ€λΌκ³ λΆλ₯΄λ©°, νλμ λ©μλλ₯Ό λ¬Όλ €μ€ ν΄λμ€λ λΆλͺ¨ ν΄λμ€λΌκ³ λΆλ₯Έλ€.
- μμμ νλ©΄ λΆλͺ¨ ν΄λμ€μ νλμ λ©μλκ° μμ ν΄λμ€μκ² μμ, λ¨ λΆλͺ¨ ν΄λμ€μ μμ±μλ μμμ΄ λμ§ μμ.
- λΆλͺ¨μ private λ©€λ²λ μμ λμμμ μ μΈ
15 - 2. μ€λ²λΌμ΄λ© (overriding)
- λΆλͺ¨ ν΄λμ€λ‘λΆν° μμ λ°μ λ©μλλ₯Ό μμ ν΄λμ€μμ νμλ₯Ό λ°κΎΈκ±°λ 보μνκΈ° μν΄ λ€μ μ μν΄μ μ¬μ©νλ κ².
- λΆλͺ¨ ν΄λμμμ μ΄λ ν μ©λλ‘ μ¬μ©νλ λ©μλλ₯Ό μμ ν΄λμ€μμ λ€λ₯Έ μ©λλ‘ μ¬μ©ν λ, νμν¨.
- μ€λ²λΌμ΄λ©μ κ·μΉ
- λΆλͺ¨κ° λ¬Όλ €μ£Όλ λ©μλμ μ΄λ¦μ΄ λμΌ.
- λΆλͺ¨κ° λ¬Όλ €μ£Όλ λ©μλμ λ§€κ° λ³μ μ μΈμ΄ λμΌ.
- λΆλͺ¨κ° λ¬Όλ €μ£Όλ λ©μλλ‘Έ λ¦¬ν΄ νμ μ΄ κ°μμΌ ν¨.
- μ κ·Ό μ νμλ κ°κ±°λ λ λμ΄μΌ ν¨.
15 - 3. super
μμ λ°κ³ μλ λΆλͺ¨ κ°μ²΄λ₯Ό μ§λͺ©ν λ μ¬μ©νλ ν€μλμ΄λ€.
μ΄ ν€μλλ₯Ό ν΅ν΄ λΆλͺ¨μ νλ & λ©μλλ₯Ό μ§λͺ©ν μ μμΌλ©°, λΆλͺ¨μ μμ±μλ₯Ό νΈμΆνλ κ² λν κ°λ₯.
//λΆλͺ¨ ν΄λμ€
public class Person {
String name;
int age;
public Person() {}
public Person(String name) {
this.name = name;
}
String info() {
return "μ΄λ¦: " + name + ", λμ΄: " + age;
}
}
//////////////////////////////////////////////////////
public class Student extends Person {
String studentId;
public Student(String name, String studentId) {
super(name);
this.studentId = studentId;
}
@override
String info() {
return super.info() + "νλ²: " + studentId;
}
void study() {
System.out.println("곡λΆλ₯Ό ν©λλ€.");
}
}
- μ μ½λμμ λΆλͺ¨κ° λ¬Όλ €μ€ λ©μλμΈ infoμ Studentκ° κ°μ§λ κ³ μ ν μμ±μΈ studentId μ λ³΄λ§ μΆκ°ν΄μ£Όλ μμΌλ‘ μ€λ²λΌμ΄λ© μ§ν
- κ·Έλ κΈ° λλ¬Έμ, μμ ν λ―μ΄ κ³ μΉλ κ²μ΄ μλ, λΆλͺ¨ λ©μλ κΈ°λ°μΌλ‘ μμμ κ³ μ μμ±λ§ μΆκ°ν΄μ€λ €κ³ ν¨.
- κ·Έλμ super.info()λ₯Ό ν΅ν΄ λΆλͺ¨μ λ©μλλ₯Ό κ°μ Έμκ³ , 리ν΄λ λ¬Έμμ΄μ studentIdλ§ μΆκ°.
- μμ±μμ κ²½μ°, μμ ν΄λμ€μ μμ±μλ name / studentIdλ₯Ό λ°κ³ μλ λͺ¨μ΅.
- μμ μμ±μ λ΄μμ nameκ³Ό studentIdλ₯Ό μ΄κΈ°ν ν μλ μμ§λ§, μμ μμ±μλ λΆλͺ¨ μμ±μλ₯Ό νΈμΆ ν΄μΌ κ°μ²΄λ₯Ό μμ±ν μ μκΈ° λλ¬Έμ λΆλͺ¨μ μμ±μλ₯Ό λΆλ¬ μ΄κΈ°νλ₯Ό νλ λͺ¨μ΅. (super(name)μ μ¬μ©)
* μμ ν΄λμ€μ μμ±μμλ νμ super()κ° κΈ°λ³Έμ μΌλ‘ λ€μ΄ μμ. (κΈ°λ³Έμ μΌλ‘ μ»΄νμΌλ¬κ° super()μ μ½μ ν΄μ£ΌκΈ° λλ¬Έμ)
* κΈ°λ³Έμ μΌλ‘ μμ κ°μ²΄λ λΆλͺ¨ κ°μ²΄κ° μ°μ μ μΌλ‘ μμ± λμ΄μΌ ν¨.
* κ·Έλ κΈ° λλ¬Έμ super()λ₯Ό μλ΅νλλΌλ μμ κ°μ²΄κ° μμ±μ΄ λμ§λ§, μ§μ superν€μλλ₯Ό μ¬μ©νμ¬ λΆλͺ¨ μμ±μλ₯Ό 골λΌμ νΈμΆν μ μμ.
16. static
public class MyClass {
public int a; //μΈμ€ν΄μ€ νλ
public static int b; //μ μ νλ
}
- λ¨Όμ ν΄λμ€μ μΈμ€ν΄μ€ νλμ μ μ νλ νλλ₯Ό μμ± ν΄λ³Έλ€.
Count c1 = new Count();
c1.a += 5;
c1.b += 5;
System.out.println("μΈμ€ν΄μ€ λ³μ c1.a: " + c1.a); //5
System.out.println("μ μ λ³μ c1.b: " + c1.b); //5
- μ²μμλ μλ‘ κ°μ κ°μ΄ λμ€λ κ²μ λ³Ό μ μμ§λ§,
Count c2 = new Count();
c2.a += 7;
c2.b += 7;
System.out.println("μΈμ€ν΄μ€ λ³μ c2.a: " + c2.a); //7
System.out.println("μ μ λ³μ c2.b: " + c2.b); //12
- λμ€μλ μλ‘ λ€λ₯Έ κ°μ΄ λμ¨ κ²μ λ³Ό μ μλ€.
- κ°μ²΄μ νλλ κ° κ°μ²΄λ§λ€ κ³ μ νκ² κ°μ§κ³ μλ κ°μ΄λ€. μ΄λ° μ΄μ λ‘ κ°μ²΄λ₯Ό μμ±ν λλ§λ€ κ·Έ κ°μ²΄λ€ λ΄μ aλΌλ νλκ° κ°κ° μ‘΄μ¬νκΈ° λλ¬Έμ κ°μ΄ λ€ λ€λ₯΄λ€.
- λ°λ©΄ μ μ λ³μλ κ°μ²΄λ§λ€ μμ±λλ κ²μ΄ μλ, λ°λ‘ μμ±λμ΄μ λͺ¨λ κ°μ²΄κ° 곡μ νλ μ μ λ³μλ‘μ λμνκΈ° λλ¬Έμ κ°μ΄ λμ λ¨.
- κ·Έλ κΈ° λλ¬Έμ μΌλ° νλλ₯Ό λΆλ₯΄λ κ²μ²λΌ static νλλ₯Ό λΆλ₯΄λ κ²μ νΌλμ μ€ μ μμ΄, staticμ λΆλ₯΄λ λ°©μμΌλ‘ λΆλ¬μΌ νλ€.
public class Count {
public int a; //μΈμ€ν΄μ€ λ³μ
public static int b; //μ μ λ³μ
//μΌλ° λ©μλ
public int method1() {
return this.a + Count.b;
}
//static λ©μλ
public static int method2() {
//this.a = 10; (x)
Count ccc = new Count();
return ccc.a + Count.b;
}
}
- μΈμ€ν΄μ€ λ©μλ μμλ μ μ λ³μμ μΈμ€ν΄μ€ λ³μ, λͺ¨λλ₯Ό μ¬μ©ν μ μμ.
- λ°λ©΄ μ μ λ©μλ λ΄λΆμμλ staticμ΄ λΆμ λ³μλ λ©μλλ§ μ¬μ© κ°λ₯.
- λνλΌ μ£Όμκ°μ΄ μκΈ° λλ¬Έμ thisλ μ¬μ©ν μ μμ.
- static λΈλ‘ λ΄λΆμμ non-static λ©€λ²λ₯Ό μ¬μ©ν λ €λ©΄ λ°λμ κ°μ²΄λ₯Ό μμ±ν΄μ μ£Όμκ°μ ν΅ν΄ μ°Έμ‘°ν΄μΌ νλ€.
* μ°λ¦¬κ° νμμ μ¬μ©νλ main λ©μλλ μ μ λ©μλμ΄λ€.
- staticμ λͺ¨λ κ°μ²΄κ° 곡μ ν΄λ λ¬Έμ κ° μλ νλλ λ©μλμ λΆμ.
17. final
17 - 1. final νλ
public class Person {
final String nation; //μλ¬
String name;
int age;
}
- ν΄λμ€λ₯Ό μ μΈν λ final νλλ₯Ό μ μΈνκ³ , κ·Έλ₯ κ°λ§ν μμΌλ©΄ μλ¬ λ°μ. (λ°λμ μ΄κΈ°νλ₯Ό ν΄μ λ§μ§λ§ κ°μ μ§μ ν΄μ£Όμ΄μΌ ν¨.)
public class Person {
final String nation = "λνλ―Όκ΅";
String name;
int age;
}
public class Person {
final String nation = "λνλ―Όκ΅";
final String name;
int age;
//μμ±μλ₯Ό μ΄μ©ν΄μ μ΄κΈ°ν.
public Person(String name) {
this.name = name;
}
}
- final νλμ μ§μ μ΄κΈ°ν νλ λ°©μ λΏλ§ μλλΌ, κ°μ²΄ μμ± μ λμ μ΄κΈ°ν ν μ μλλ‘ μμ±μμ νλ μ΄κΈ°ν λ‘μ§μ μμ±ν μ μμ.
public class Main {
Person p = new Person("κΉμ² μ");
p.nation = "λ―Έκ΅"; //μλ¬
p.name = "κΉλ§μ΄ν΄"; //μλ¬
}
17 - 2. final method
- finalμ΄ λΆμ λ©μλλ μ€λ²λΌμ΄λ©μ λ§λλ€.
public class Parent {
void method1() {}
void method2() {}
final void method3() {}
}
public class Child extends Parent {
@Override
void method1() {
// TODO Auto-generated method stub
super.method1();
}
@Override
void method2() {
// TODO Auto-generated method stub
super.method2();
}
// void method3() {
// System.out.println("μ€λ²λΌμ΄λ© ν΄μΌμ§~");
// } (x) final λ©μλλ μ€λ²λΌμ΄λ©μ λ§μ΅λλ€. (μ£Όλ λλ‘ μ¨λΌ~)
}
15 - 3. final class
- ν΄λμ€ μ μΈ μ, finalμ μ¬μ©νλ©΄ κ·Έ ν΄λμ€λ μμμ΄ λΆκ°λ₯.
public final class Parent {
...
}
- μμ μμ²΄κ° λ§νλ©° μ½λ μλ¬κ° λ°μν¨.
- final ν΄λμ€λ μμ ν΄λμ€λ₯Ό κ°μ§ μ μκ³ , μ€μ§ μΈλΆμμ μ§μ κ°μ²΄ μμ±μ ν΅ν΄μλ§ μ¬μ©ν μ μμ.
15 - 4. μμ
κ³ μ λ λΆλ³μ κ°.
λͺ¨λ κ°μ²΄κ° ν΄λΉ κ°μ 곡μ ν μ μλ μ μμ±μ κ°μ ΈμΌ νκ³ , λμμ κ°μ΄ λ³νμ§ μλ λΆλ³μ±μ κ°μ ΈμΌ ν¨.
-> static κ³Ό finalμ μ±μ§μ λ λ€ κ°κ³ μμ΄μΌν¨.
public class Earth {
static final double RADIUS = 6400;
static final double SURFACE_AREA;
static {
SURFACE_AREA = RADIUS * RADIUS * Math.PI * 4;
}
}
- μμλ λ€λ₯Έ μΌλ° λ³μμμ μ°¨μ΄λ₯Ό μν΄ λͺ¨λ κΈμλ₯Ό λλ¬Έμλ‘ μ μΈ.
- λ§μ½ λ°μ΄μ°κΈ°λ₯Ό ν λ €λ©΄, _λ₯Ό μ΄μ©νμ¬ μ°κ²°ν΄μ€λ€.
16. λ€νμ±
νλμ κ°μ²΄κ° μ¬λ¬κ°μ§ νμ μΌλ‘ μ¬μ©λλ κ²μ μλ―Έ.
μμμ μ μ 쑰건μΌλ‘ ν¨.
λ€νμ±μ μν΄, μλ°λ μμ ν΄λμ€κ° λΆλͺ¨ ν΄λμ€μ νμ μ κ°μ§ μ μλλ‘ νμ©ν¨.
class A {}
class B extends A {}
class C extends A {}
class D extends B {}
class E extends C {}
public class Basic {
//λ€νμ±μ μ μ©νμ§ μμμ λ
A a = new A();
B b = new B();
C c = new C();
D d = new D();
E e = new E();
//λ€νμ±μ μ μ©νμ λ
A v1 = new B(); //ν΄λμ€ νμ
B -> Aνμ
μΌλ‘ μλ ν λ³ν(promotion)
A v2 = new C();
A v3 = new D();
A v4 = new E();
}
- λ€νμ±μ΄ μμ λλ μ°Έμ‘° λ³μμ νμ μ κ°μ²΄μ λ§κ² μμ±ν΄ μ£Όμ΄μΌ νλ€.
- νμ§λ§ λ€νμ±μ΄ μ μ©μ΄ λμλ€λ©΄, μ΅μμ λΆλͺ¨μΈ A νμ μ λͺ¨λ κ°μ²΄μ μ£Όμκ°μ΄ μ μ₯λ μ μμ.
16 - 1 . λ€νμ±μ μ΄μ
Dog dog = new Dog();
Cat cat = new Cat();
Duck duck = new Duck();
Animal[] animals = {dog, cat, duck};
- κ°μ λ€λ₯Έ 3κ°μ μμ κ°μ²΄λ₯Ό νλμ λ°°μ΄μ λ£κ³ μΆλ€.
- λ°°μ΄μ λμ’ λͺ¨μ ꡬ쑰μ΄κΈ° λλ¬Έμ κ°μ νμ λΌλ¦¬λ§ λ°°μ΄μ λͺ¨μ¬ μμ μκ° μλλ° λ°°μ΄μ λΆλͺ¨ νμ μΌλ‘ μ μΈνλλ, λͺ¨λ μμμ κ°μ²΄κ° νλμ λ°°μ΄λ‘ λͺ¨μ¬μμ΄ μ½κ² κ΄λ¦¬ν μ μμ.
//λ§€κ°λ³μμ λ€νμ±μ΄ μ μ©λμ΄ μμ§ μλ€λ©΄
//λ©μλ μ€λ²λ‘λ©μ ν΅ν΄ μΌμΌν ꡬν ν΄ μ£Όμ΄μΌν¨.
public void makeSound(Dog dog) {...}
public void makeSound(Cat cat) {...}
public void makeSound(Duck duck) {...}
////////////////////////////////////////////////////////////////
//λ§€κ°λ³μμ λ€νμ±μ μ€ κ²½μ°
public void makeSound(Animal animal) {
animal.sound(); //dog, cat, duck λͺ¨λ sound() νΈμΆ κ°λ₯.
}
- λ§μ½ λ§€κ°λ³μμ λ€νμ±μ μ¬μ©νμ§ μλλ€λ©΄, μΌμΌν νμ μ΄ λ€λ₯Έ λ©μλλ₯Ό μ μΈν΄μΌ νλ€.
- νμ§λ§ λ€νμ±μ μ μ©ν¨μΌλ‘μ¨ κ΅³μ΄ μ¬λ¬ κ°μ λ©μλλ₯Ό μ μΈν νμ μμ΄ νλμ λ©μλ λ§μΌλ‘ μ¬λ¬ κ°μ κ°μ²΄λ₯Ό λ°μ μ²λ¦¬ν μ μμ.
public Dog returnDog() {...}
public Cat returnCat() {...}
public Duck returnDuck() {...}
//////////////////////////////////
public Animal returnAnimal(String name) {
if(name.equals("κ°μμ§")) {
return new Dog();
} else if(name.equals("κ³ μμ΄")) {
return new Cat();
} else if(name.equals("κ½₯κ½₯μ΄")) {
return new Duck();
}
}
- λ€νμ±μ λ¦¬ν΄ νμ μ μ μ©νμ¬, ν΄λΉ λΆλͺ¨ νμ μ λ§λ λͺ¨λ μμ κ°μ²΄κ° λ¦¬ν΄ λ μ μμ.
16 - 2. νμ μΊμ€ν
public class Parent {
public int n1;
void method1() {...}
void method2() {...}
}
public class Child extends Parent {
public int n2;
@override
void method2() {...}
void method3() {...}
}
//////////////////////////////////////////////////////////////////////
public class Main {
Parent p = new Child();
p.n1 = 1;
//p.n2 = 2; (x)
p.method1();
p.method2();
//p.method3(); (x)
}
- μ μ½λμμ λΆλͺ¨κ° λ¬Όλ €μ€ κ²λ€κ³Ό μμμ΄ μ€λ²λΌμ΄λ ν λ©μλκΉμ§λ μ μμ μΌλ‘ νΈμΆμ΄ λμμ§λ§, μμ κ³ μ μ μμ± λ° κΈ°λ₯μ μ¬μ©νμ§ λͺ»νλ λͺ¨μ΅μ λ³Ό μ μμ.
- μ΄λ¬ν μ΄μ λ λΆλͺ¨μ μ 보λ‘λ μμμ΄ μ΄λ»κ² κ°λ μ νμ₯ νλμ§μ λν μ 보λ₯Ό μ»μ μ μκΈ° λλ¬Έμ΄λ€.
- κ·Έλμ λΆλͺ¨νμ μ λ³μλ₯Ό μμ νμ μΌλ‘ νλ³νμ μ§νν΄μΌ ν¨.
Child c = (Child) p;
c.n2 = 2;
c.method3(); //μ£Όμκ°μ μμ νμ
μΌλ‘ λ΄λ¦¬λκΉ μμ± λ° κΈ°λ₯ μ¬μ© κ°λ₯.
16 - 3. instanceOf
public void sayHello(Animal ani) {
if(ani instanceof Dog) {
System.out.println("κ°μμ§κ° 꼬리λ₯Ό νλ€μ΄μ.");
} else if(ani instanceof Cat) {
System.out.println("κ³ μμ΄κ° λλ₯Ό λͺ» λ³Έμ² ν΄μ");
} else if(ani instanceof Duck) {
System.out.println("μ€λ¦¬κ° κ½κ½ μΈμ΄μ.");
}
}
- μ λ©μλλ λ§€κ°λ³μμ λ€νμ±μ΄ μ μ©λμ΄ μμ.
- νμ§λ§ μ΄λ€ κ°μ²΄λμ λ°λΌ λ€λ₯Έ μΈμ¬λ²μ κ°μ§κ³ μκΈ° λλ¬Έμ, κ°μ²΄ ꡬλΆμ΄ νμν¨.
- μ΄ λ, instanceof ν€μλλ₯Ό ν΅ν΄, ν΄λΉ κ°μ²΄κ° μ΄λ€ νμ μ κ°μ§κ³ μλ μ§λ₯Ό λ¬Όμ΄ λ³Ό μ μμ.
17. μΆμ ν΄λμ€ & μΆμ λ©μλ
17 - 1. μΆμ λ©μλ
λ©μλ μ μΈλ§ λμ΄μκ³ λ©μλμ λ°λκ° μλ λ©μλ.
μ¦, νλ§ κ΅¬μΆνκ³ μλ§Ήμ΄κ° μλ κ»λ°κΈ° λ©μλμ΄λ€.
μΆμ λ©μλλ μΆμ ν΄λμ€μμλ§ μ μΈν μ μμ.
17 - 2. μΆμ ν΄λμ€
μΆμ λ©μλκ° νλ μ΄μ ν¬ν¨λμ΄ μλ ν΄λμ€.
λ―Έμμ± λ λ©μλλ₯Ό ν¬ν¨λμκΈ° λλ¬Έμ μ€μ€λ‘μ κ°μ²΄λ₯Ό μμ±ν μ μλ€.
λ°λμ μΆμ ν΄λμ€λ₯Ό μμλ°μ μΆμ λ©μλλ₯Ό ꡬνν μμ ν΄λμ€λ₯Ό ν΅ν΄ μμ±ν΄μ μ¬μ©ν΄μΌ ν¨.
- μΆμ κ°λ μ μ¬μ©νλ μ΄μ
- λ€νμ± κ΅¬ν λͺ©μ μ΄ λλ ·ν΄ μ§λ€. (μμ ν΄λμ€ μͺ½μμ ꡬ체μ μΈ κ΅¬νμ λ΄λΉνκ² ν¨μΌλ‘μ¨ μ μ§λ³΄μμ±μ λ λμΌ μ μμ.)
- μ½λ λμμΈ ν¨ν΄ μ μ© (κ°μ νλ₯Ό μν¬ μ μλ μ±κ²©μΌλ‘ νμ μ‘ν μ½λ ν¨ν΄μ κ°μ νκΈ° μ¬μ.)
- μ½λ μ¬μ¬μ©μ±μ ν΅ν κ°μ²΄μ§ν₯μ νλ‘κ·Έλλ°
18. μΈν°νμ΄μ€
ꡬννκ³ μ νλ ν΄λμ€μ λμΌν λͺ©μ νμ λμΌν κΈ°λ₯μ μννκ²λ κ°μ νλ ν΄λμ€μ ν μν μ νλ κ².
18 - 1. μΈν°νμ΄μ€μ λ¬Έλ²
public interface Animal {
//int i; (x)
//public Animal() {} (x)
public static final String name = "Animal";
void move();
}
public interface Mammals {
void feeding();
}
public interface Bird extends Animal {
void fly();
}
- μΈν°νμ΄μ€λ μΆμ λ©μλ λ°μ κ°μ§ μ μμ.
- μ μ΄μ κ°μ²΄λ₯Ό μμ±νκΈ° μν κ°λ μ΄ μλκΈ° λλ¬Έμ μ΄λ ν λ°μ΄ν°λ μ μ₯ν μ μμ.
- μμ±μλ μ μΈλ μ μκ³ , λ©μλ λν μ€μ²΄κ° μλ μΆμ λ©μλλ§ μ μΈ κ°λ₯.
- λ¨, μμλ μ μΈ κ°λ₯ (static λ©μλλ μ μΈν μ μμ.)
- μΈν°νμ΄μ€λ€ λΌλ¦¬ μμμ΄ κ°λ₯ν λΏλ§ μλλΌ, λ€μ€ μμλ κ°λ₯. (κ»λ°κΈ°λ€λΌλ¦¬ λ¬Όλ €μ£Όλ κ²μ΄κΈ° λλ¬Έμ)
18 - 2. ꡬν
- ꡬνμ ν€μλλ μμμ ν€μλμΈ extendsκ° λ€λ₯΄κ², implementsfmf μ¬μ©.
- μΈν°νμ΄μ€κ° κ°μ§κ³ μλ μΆμ λ©μλλ₯Ό λ°λμ ꡬνν΄μΌν¨.
- μΈν°νμ΄μ€λ λμμ μ¬λ¬ κ° κ΅¬νν μ μμ.
- λ€νμ±μμ ν΄λμ€ νμ λ€ λ³΄λ€ ν¨μ¬ μ μ°νκ² λμ.
- ꡬν ν΄λμ€λ μμ μ΄ κ΅¬νν μΈν°νμ΄μ€ νμ μ λͺ¨λ κ°μ§ μ μμ.
18 - 3. μΈν°νμ΄μ€μ μΆμ ν΄λμ€μ μ°¨μ΄
- μΈν° νμ΄μ€λ μΆμ ν΄λμ€λ³΄λ€ λ μΆμν λ κ°λ .
- μΆμ ν΄λμ€λ μΆμ λ©μλμ μΌλ° λ©μλ λ λ€ κ°μ§μ μλ λ°λ©΄μ, μΈν°νμ΄μ€λ μΆμ λ©μλμ μμ νλλ§μ κ°μ§ μ μμ.
- μΈν°νμ΄μ€λ λ€μ€ μμμ΄ κ°λ₯νμ¬, μ¬λ¬ κ°μ μΈν°νμ΄μ€λ₯Ό ꡬννλ κ²μ΄ κ°λ₯.
- μΈν°νμ΄μ€λ λμΌν ꡬν λ° λμΌν λμμ κ°μ νλλ° μ΄μ μ΄ λ§μΆ°μ Έ μλ€.
- μ¦, μΈν°νμ΄μ€λ λ€νμ±κ³Ό μ μ°μ±μ μ 곡νλ λ° μ£Όλ‘ μ¬μ©νκ³ , μΆμ ν΄λμ€λ μ½λμ μ¬μ¬μ©μ±κ³Ό νμ₯μ±μ κ³ λ €ν λ μ¬μ©νλ€.
- μ λ°μ μΈ λλ μ (μΌμ£ΌμΌ λμ ν μΌ)
- 2μ 4μ£Όμ°¨μλ 본격μ μΈ μλ°μ λ¬Έλ²μ λν΄ λ°°μ λ€. λΆνΈμΊ νμ λ€μ΄μ€κΈ° μ μλ° λ¬Έλ²μ μ‘°κΈ κ³΅λΆν΄μ κ·Έλ°μ§, μμ μ λ°λΌμ€λ κ²μλ λ¬Έμ κ° μμλ€. νμ§λ§ μμ μ κ³μ λ€μ΄λ³΄λ μ΄ν΄κ° κ°μ§ μμ λΆλΆ λλ μ²μ λ΄€λ λΆλΆλ€μ΄ κ³μν΄μ 보μ¬, λ΄κ° 곡λΆν μ§μμ λ λν μΌν λΆλΆμ 보좩ν΄μΌκ² λ€κ³ μκ°νλ€.
- μ’μλ μ (μ’μκ±°λ λ΄κ° μνλ μ )
- λ§μΉ ꡬλ©μ λ©κΎΈλ κ²μ²λΌ, μμ μ ν΅ν΄ λ΄ λΉμ½νλ μλ° μ§μμ μ±μΈ μ μμ΄μ λ§€μ° μ’μλ€.
λν μ΄λ―Έ μλ λ΄μ©μ΄λλΌλ ν λ² λ 볡μ΅ν μ μλ κ³κΈ°κ° λμ΄μ μ’μλ€.
- μμ¬μ λ μ
- μμ§ λͺ¨λ₯΄λ κ°λ λ€μ΄ μμ΄μ μ‘°κΈ λ λ³΄μΆ©μ΄ νμν κ² κ°λ€. (λ€νμ±, this() λ±λ±....)
λ¬Όλ‘ μ΄μ κ΄λ ¨λ μκ³ λ¦¬μ¦ λ¬Έμ μ μ κ·Όλ μμ§ νλ 건 λ€.
- κ°μ ν μ
- μλ°μμ λͺ¨λ₯΄λ λΆλΆμ΄λ μ§μμ μ’ λ 보좩νκΈ°.
- λ€μ μ£Ό κ³ν
- 본격μ μΈ μκ³ λ¦¬μ¦ νμ΄ μμ
- μ΄ν κ³΅λΆ μ¬μ¬ μμνκΈ°.
- μ§λλ²μ μμ νλ git/git_hub κ·Έλ¦¬κ³ μλ° λ³΅μ΅