◎ JAVA

인터페이스 활용

◆ 익명중첩 클래스

: 객체 생성 시 해당 클래스의 내용을 재정의 또는 추가하기 위해 사용하는 것이다.
(원칙) 인터페이스는 객체 생성이 불가능하다.
(예외) 추상메소드가 해결되면 생성이 가능하다.(익명중첩 클래스 = anonymous inner class = 무명클래스)

  • 객체 생성 구문 뒤에 {}를 열고 클래스처럼 메소드를 재정의 한다.
  • 1회용이므로 객체가 소멸하면 클래스도 소멸한다.
  • 간단하게 무언가 한 두개를 고치고 싶을 때 익명중첩 클래스를 사용한다. (인터페이스가 아니어도 상속받기 싫을 때 사용 가능)
  • 클래스를 만드는 것이 아니라 객체 생성 시점에서 재정의 또는 추가이기 때문에 클래스 원본의 내용은 수정되지 않는다.

◆ Lamda(람다)

  • 추론을 할 수 있도록 축약한 식을 말한다.
  • Lamda를 사용하면 코드를 간소화 할 수 있다.
  • 함수형 프로그래밍을 위해 자바에서 제공하는 방법이다.
  • 속도가 조금 느려지는 단점이 있다.
  • 자바의 단점인 긴 코드를 줄일 수 있는 조건 중 한 개가 람다이다.

반드시 지켜져야 하는 조건!!

  • 인터페이스일 것 (추상클래스일 경우 사용 불가)

  • 메소드를 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는 문서(설명서)가 꼭 있어야 한다.

  • api = 문서 + 클래스, 인터페이스, 패키지...등

  • 라이브러리 : scanner도 라이브러리에 포함됨.
    자유도가 높은 장점이 있다.

  • 프레임워크 : 완성된 시스템이 없을 경우 직접 만들어야 하므로 힘들어진다.
    이용방법이 정해져 있어서 있는것 외에는 사용할 수 없으며, 자유도가 떨어진다.

  • 구글에서 java 17 api를 검색해서 문서를 확인 할 수 있다.

  • 패키지명에 java.lang으로 이름을 넣으면 나중에 충돌이 생기므로 java는 이름으로 사용하지 않는다.

  • api를 볼 때 가장 먼저 보는 것이 생성자이다. (필드와 메서드 보다)
    protected는 상속 받았을 때만 사용 할 수 있다.

Object

  • 최상위 클래스이다.
  • 보관용도로 사용하면 "아무거나"라는 뜻과 같다.
  • Object를 꺼내서 사용 할 경우에는 다운캐스팅을 해야한다.

문자열 편집

  • 문자열은 불변(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)

  • 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

profile
Backend Developer

0개의 댓글