온라인 강의는 잠시 멈추고 오프라인에 집중하기로 했다. 오프라인 강의에서 내주시는 실습 문제가 꽤나 많아서 우선적으로 해야할 것 같아서 온라인 강의 듣는 거는 조금 미루기로 했다. 어차피 온라인이 진도도 빨라서 조금 천천히 들어도 괜찮을 것 같다.
아직 1단계 수준의 알고리즘 문제를 풀고있는데 꽤나 고전하고있다. 특히 문자열이랑 배열에 오면서부터 내가 확실하게 이해하고 넘어가지 않아서인지 2차원 배열이라던지 특정 문자를 구별해서 처리하는 등의 작업이 꽤나 힘들다. 계속해서 하지않으면 안될 것 같다.
이번 주에 TIL 쓰는 걸 조금 게을리 했더니 많이 미뤄졌다. 지나간건 지나간거고 앞으로 다시 열심히 작성해봐야겠다.
static
클래스를 로딩할 때 같이 로딩해서 객체 생성이 필요없는 변수나 메소드를 지정해줄 때 static이라고 선언해준다.
객체마다 가지고 있어야하는 데이터면 인스턴스 필드로 선언하고, 객체마다 가지고 있을 필요는 없는 공용 데이터라면 static으로 선언해주면 된다.
선언하는 방법은 간단하다.
public class 클래스이름 {
// 정적 필드
접근제어자 static 타입필드 = 초기값;
// 정적 메소드
접근제어자 static 반환형 메소드 (매개변수, ...) { ... }
}
위 처럼 접근제어자 다음에 static을 위치시켜주면 그 필드나 메소드는 static으로 선언이 되는 것이다.
그러면 main 메소드가 public static void인 이유는 가장 먼저 메모리에 올라가야 하기 때문이라는 걸 알 수 있다.
싱글톤 패턴
전체 프로그램에서 하나의 객체만 생성하겠다는 뜻이다.
데이터베이스에 접근하는 객체는 하나여야한다 -> 수정 중에 다른 객체가 들어오거나 사용하면 안된다는 뜻.
어노테이션(Annotation)
데이터 처리가 아닌 컴파일 과정과 실행 과정에서 코드를 어떻게 컴파일할지 알려주는 정보
@AnnitationName
ex)@Override
실습 1
static 필드에 접근하려면 메소드도 static으로 정의해주어야 한다.
public class Car {
int speed;
static void run() { ... }
public static void main(String[] args) {
speed = 60;
run();
}
}