: 객체 생성 시 해당 클래스의 내용을 재정의 또는 추가하기 위해 사용하는 것이다.
(원칙) 인터페이스는 객체 생성이 불가능하다.
(예외) 추상메소드가 해결되면 생성이 가능하다.(익명중첩 클래스 = anonymous inner class = 무명클래스)
반드시 지켜져야 하는 조건!!
인터페이스일 것 (추상클래스일 경우 사용 불가)
메소드를 1개만 가지고 있을 것(함수형 인터페이스)
등장 시기 : java 8 이상부터 사용 가능
ex) Button menu = () -> { System.out.println("메뉴 표시"); }; menu.push();
'->' 이 표시는 추론식을 의미한다.
코드가 한 줄일 경우 {}; 를 생략 가능
-ex) 일반적으로 Lamda식 코드
Calculator calculator = (int left, int right) -> { return left + right; }; System.out.println(calculator.process(10, 20));
-ex) 간소화 할 경우 코드
Calculator calculator = (left, right) -> left + right; System.out.println(calculator.process(10, 20));
api는 문서(설명서)가 꼭 있어야 한다.
api = 문서 + 클래스, 인터페이스, 패키지...등
라이브러리 : scanner도 라이브러리에 포함됨.
자유도가 높은 장점이 있다.
프레임워크 : 완성된 시스템이 없을 경우 직접 만들어야 하므로 힘들어진다.
이용방법이 정해져 있어서 있는것 외에는 사용할 수 없으며, 자유도가 떨어진다.
구글에서 java 17 api를 검색해서 문서를 확인 할 수 있다.
패키지명에 java.lang으로 이름을 넣으면 나중에 충돌이 생기므로 java는 이름으로 사용하지 않는다.
api를 볼 때 가장 먼저 보는 것이 생성자이다. (필드와 메서드 보다)
protected는 상속 받았을 때만 사용 할 수 있다.
문자열은 불변(immutable) 속성을 가진다.
한 번 만들어진 문자열은 바뀌지 않으며, 바꾸고 싶다면 새로 만들어야 한다.
대문자 변환 : .toUpperCase()
소문자 변환 : .toLowerCase()
문자열을 Scanner로 입력 받는 방법.
Scanner sc = new Scanner(System.in);
System out print("문자열을 입력 : ");
String line = sc.nextLine();
sc.close();
Scanner sc = new Scanner(System.in);
System out print("문자열을 입력 : ");
String line = sc.next();
sc.close();
regex : 정규표현식의 줄임말이다
^$
: 검사식의 시작과 종료를 의미한다.
^[a-z]$
: a부터 z사이에서 한 글자가 출력 된다.
^[a-z]+$
: a부터 z사이에서 한 글자가 한 번 이상 출력 된다.
ex) ^[a-z]{2}$
: 알파벳 한 글자를 2번 반복해서 시각화 할 때 사용한다.
ex) ^[a-z]{2,3}$
: 2~3번 반복한다.
^[가-힣]{2,7}$
: 한글의 범위에서 2글자에서 7글자 사이
()이스케이프 문자를 사용하면 원하는 문자를 사용 할 수 있다.
\-
을 정규표현식에 사용하면 '-'만 출력된다.
\d
: digit. [0-9]와 같다.
ex) \d{4}
: 0-9까지 4번 출력 된다.
\w
: word. [A-Za-z0-9-_]와 같다.
\s
: whitespace. 공백을 의미한다.
.
: any character. 아무 글자나 1개를 의미한다.
^(19|20)$
: 숫자 19 또는 20 중에서 한 개가 출력 된다.
한글의 범위 : '가' ~ '힣'
영어의 대문자 범위 : 'A' ~ 'Z'
영어의 소문자 범위 : 'a' ~ 'z'
숫자의 범위 : 0 ~ 9