1. 스레드
■ 스레드 : 프로그램 내에서 동작하는 작업 단위. 여러 개의 작업을 동시에 실행하는 기능
=> 여기서는 단지 시각적 효과를 주기 위해 사용
public void printShutdown() {
for(int i = 0; i < 5; i++) {
System.out.print(".");
try {
Thread.sleep(500);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println(" 프로그램을 종료합니다");
}
반복문을 돌면서 .을 5번 출력한다.
■ Thread.sleep() : 현재 실행 중인 스레드를 멈추는 기능
□ Thread.sleep(500) : 스레드를 0.5초 동안 멈춘다.
□ 500ms = 0.5초.
□ 0.5초마다 멈추면서 . 이 출력되고 프로그램을 종료합니다 문구가 띄워진 후 종료.
■ InterruptedException 예외 : 스레드가 중단(interrupt)되었을 때 발생하는 예외
스레드가 sleep()이나 wait()인 도중 다른 스레드에 의해 깨워질 때 이 예외가 발생.
다른 스레드가 interrupt()를 호출할 경우 예외 발생
2. Iterator (복사체, 반복자)
+) remove() : 현재 요소 삭제
□ Jsoup의 Elements를 순회할 때도 사용
□ 순회하면서 삭제도 가능
public void printDatas(ArrayList<ProductDTO> datas) {
Iterator itr=datas.iterator();
while(itr.hasNext()) { // 다음 요소가 있다면
System.out.println(itr.next()); // 요소 출력
}
}
상품DTO를 자료형으로 하는 ArrayList의 요소들을 하나씩 출력하고자 한다.
Iterator itr = datas.iterator();
이터레이터를 생성하는 과정.
Iterator를 자료형으로 하는 변수 itr을 선언한 후 datas.iterator()를 호출하여 datas 리스트의 Iterator 객체를 가져온다.
(datas 리스트가 가지고 있는 Iterator = datas의 데이터를 순회할 수 있도록 도와주는 도구)
그리고 wihle문을 통해 다음 요소가 존재하지 않게 될 때까지 반복해서 요소를 가져온다.
public void printDatas(ArrayList<ProductDTO> datas) {
for (ProductDTO product : datas) {
System.out.println(product);
}
}
위 코드를 foreach문으로 바꾸면 이렇다.
3. flag 플래그
□ '깃발'을 뜻함.
■ 중복 검사에 사용. true, false만 사용
■ 상태 인식, 처리 흐름 제어
String[] datas=new String[100];
datas[0]="yes";
datas[1]="YES";
datas[2]="Yes";
datas[3]="yES";
boolean flag=false;
for(String v:datas) {
if(v.equals(ans)) {
flag=true;
break;
}
}
플래그를 false로 선언해두고 만약, 금지어 중에 일치하는 목록이 있으면 true,
없으면 false를 그대로 반환한다.
4. foreach 형식
■ 향상된 for문이라고도 불린다.
■ 배열이나 컬렉션(List, Set)을 순회할 때 사용하는 간단한 반복문
for (각 요소 값(자료형, 변수) : 배열 또는 컬렉션) {
// 반복할 코드
}
String[] names = {"KIM", "LEE", "KO", "CHOI"};
for(String name : names) {
System.out.println("내 이름은 + " + name + " 입니다");
}
내 이름은 KIM입니다, LEE입니다, KO입니다, CHOI입니다, 총 요소의 개수인 4번 반복된다.
5. instance of
: 객체가 특정 클래스나 인터페이스의 인스턴스인지 확인할 때 사용하는 연산자
■ 참조변수가 참조하고 있는 실제 인스턴스 타입을 알아보기 위해서 사용
■ 결과는 true, false가 있으며 true가 반환되었다는 것은 참조변수가 검사한 타입으로 형변환이 가능하다는 의미이다.
object instanceof Class
Object는 검사하려는 객체, Class는 객체가 속하는 클래스나 인터페이스를 뜻한다.
@Override
public boolean equals(Object obj) {
if(!(obj instanceof Circle)) {
return false;
}
Circle circle=(Circle)obj; // 형변환(캐스팅), 다운캐스팅(강제형변환)
return this.name.equals(circle.name);
}
6. 업캐스팅 / 다운 캐스팅
class Animal {
public void move() {
System.out.println("Moving...");
}
}
class Dog extends Animal {
public void bark() {
System.out.println("Barking...");
}
}
1) 업 캐스팅(Upcasting) : 자식 클래스 -> 부모 클래스 변환
□ 자동 형 변환
□ 부모의 메서드만 사용할 수 있다 (본인 고유의 메서드 사용 불가능)
Dog dog = new Dog();
Animal animal = dog; // Upcasting
2) 다운 캐스팅(Downcasting) : 부모 클래스 -> 자식 클래스 변환
□ 강제 형 변환
□ 자식 클래스의 메서드를 사용할 수 있다.
□ instance of를 통해 인스턴스 타입을 확인하기
□ 잘못된 다운 캐스팅을 할 시 런타임 오류 발생
□ 하위 클래스로의 다운캐스팅을 할때는 타입을 명시적으로 지정
Animal animal = new Animal();
Dog dog = (Dog) animal; // Downcasting
7. this, super() 문제 풀이
'IT > JAVA' 카테고리의 다른 글
생성자 (0) | 2025.02.17 |
---|---|
MVC 프로젝트 - 도서관 프로그램(VIEW 코드) (1) | 2025.02.11 |
크롤링 + MVC 패턴 (0) | 2025.02.10 |
웹 크롤링 (0) | 2025.02.10 |
MVC 패턴 복습 2 (0) | 2025.02.09 |