염비
2024. 9. 2. 21:23
1. 배열(Array)
- 동일한 특성을 갖는 여러 개의 변수의 모음
for(int i=0; i<1000; i++){
stdName[i] = "knight." + stdName[i];
}
- 배열은 자체적으로 length라는 변수를 보유
=> 배열의 길이가 얼마인가? ex) stdName.length - 값 한 개만 존재 : scalar
- 값 여러 개가 존재하는 것 : vector
- 값 여러 개가 여러 묶음 있는 것 : matrix
package day07;
import util.MyUtil;
public class ArrayEx {
public static void main(String[] args) {
MyUtil.p("Array Example");
String[] str = new String[5];
str[0] = "Eliot";
str[3] = "Abdula";
MyUtil.p("str.length? " + str.length);
String[] stdName1 = new String[5];
String[] stdName2 = {"A", "B", "C", "D", "Federer"};
// String의 재사용성
String aaa = new String("James");
String bbb = "David";
String ccc = new String("James");
String ddd = "David";
MyUtil.p("aaa == ccc? " + (aaa == ccc));
MyUtil.p("bbb == ddd? " + (bbb == ddd));
MyUtil.p("aaa === ccc? " + aaa.equals(ccc)); //값만 비교(공간 주소 신경 안 씀)
int score = 100;
Integer score1 = new Integer(100);
MyUtil.p("===============================================");
int[] score2 = {10, 20, 10, 30, 20};
// 학생의 이름과 점수들을 출력해보세요.
// 학생이름1 : **점
// 학생이름2 : **점
// ...
for(int i=0; i<score2.length; i++) {
MyUtil.p("학생이름" + (i+1) + " : " + score2[i] + "점");
}
// 2-dimensional Array
String[][] classStd = {{"A","B"},{"C","D"}};
// classStd[0][0] ~ [1][1]
// A학생의 위치는 classStd[0][0]
// C학생의 위치는 classStd[1][0]
// String[] class0 = classStd[0]
// 모든 학생 이름 출력하기x
MyUtil.p("===============================================");
MyUtil.p("Display All Student's Name");
MyUtil.p(MyUtil.GREEN + "[ General ]" + MyUtil.END);
for(int i=0; i<stdName2.length; i++) {
MyUtil.p(stdName2[i]);
}
MyUtil.p("===============================================");
MyUtil.p("Display All Student's Name");
MyUtil.p(MyUtil.RED + "[ Enhanced For문 ]" + MyUtil.END);
// stdName2에서 하나를 꺼내서 name에 넣고 한 바퀴 수행
for(String name : stdName2) { //stdName2는 String의 집합
MyUtil.p(name);
// 이름이 "C"이면 그만둠
if(name.equals("C")) {
break;
}
}
// Enhanced For를 활용하여 점수를 출력하시오.
for(int scores : score2) {
System.out.println(scores);
// MyUtil.p("" + scores);
}
// Enhanced For를 활용한 Difficulty GOD 문제
// String[][] classStd = {{"A","B"},{"C","D"}};
// Enhanced For를 활용하여 모든 학생을 출력하시오
for(String[] cls : classStd) { //classStd[0], classStd[1]
for(String cls2 : cls) {
System.out.println(cls2);
}
}
// Welcome welcome = new Welcome();
// String[] zzz = null;
// welcome.main(zzz);
}
}
2. 클래스와 객체지향(Object-Oriented)
(1) 정의
클래스(class) | 설계도 |
객체(object) | 설계도로 만든 제품 |
클래스는 객체로 구현될 때 의미가 있다.
cf) Apple과 An Apple
객체지향언어는 코드 개발 최소화가 목적
객체지향 프로그래밍은 클래스를 디자인하는 것
학생A, 학생B, 학생C
다 학생
다 사람
다 동물
다 만물(모든 Class는 Object를 조상으로 삼고 있음)
(2) 객체지향언어의 특징
1) 상속(Inheritance)
(유전에 가까움)
하위 클래스가 상위 클래스를 물려받는 것
2) 다형성(Polymorphism)
같은 이름으로 호출하나, 호출 시 전달한 인자의 타입에 따라 다르게 설계
3) 추상화(Abstraction)
사물(객체)의 속성이나 특성을 추출하는 단계
4) 캡슐화(Encapsulation)
내부를 공개하지 않는 것(예 - 리모콘)
불필요하게 복잡한 것을 피하고 위험으로부터 보호