Day12

두윤기·2023년 1월 12일
0
post-thumbnail

과제 풀이

interface

Anonymous inner class (익명 중첩 클래스)

    Button menu = new Button() {
      @Override
      public void push() {
        System.out.println("메뉴 표시");
      }
    };
  • 상속을 일회용으로 받는다. (변수에 저장하지 않는 class 구현)
  • 그 자체를 상속받아 사용하려 할 때

Lambda(추론식)

  • 추론을 할 수 있도록 안써도 되는 코드 축약한 식
  • Lambda식 사용조건
    • interface일 것 (추상 class X, static X)
    • method를 1개만 가지고 있을 것 (함수형 interface)
  • 함수형 programming을 위해 java에서 제공하는 방법
  • 속도가 약간 느려지지만 편하니까 쓰자
  • 등장 시기: Java 8+

Library

Java Standard API

> API(Application Programming Interface)

  • API: OS를 효과적으로 이용하는 도구
    • Scanner는 OS의 input stream
    • System은 OS의 각종 정보와 자원을 제공
  • API = document + Class, interface, package
  • API -> (module) -> package -> class/interface -> field/method/constructor
  • Java 8-
    • module X
  • Java 9+
    • module O

> Library

  • 자주 사용되고 유용한 기능 class들을 관련된 기능별로 분류하여 패키지단위로 묶어서 관리

> Framework

  • library를 포함한 완성된 시스템(분식집)

lang.object

  • Object is the root of the class hierarchy (모든 data type을 저장할 수 있는 배열이나 ArrayList에 활용할 수 있음)
  • Constructor
    • 기본 생성자 Object a = new Object()
  • method
    • a.equals(b)
      각 subclass마다 override해서 기준을 정해줄 수 있음
      (VScode기준 우클릭 - Source Action - Generate hashCode() and equals() - field 선택)
    • hashCode() a.hashCode()
      객체의 일련번호 출력
    • toString() a.toString()
      객체의 요약정보 확인
      It is recommended that all subclasses override this method.
      print의 parameter가 object일 때, .toString()의 결과 출력

lang.string

  • String 비교(==)

> method

return int

  • .length()
    • The length is equal to the number of Unicode code units in the string
  • .indexOf(int ch, int fromIndex), indexOf(String str, int fromIndex)
  • .compareTo(String compareStr)

return boolean

  • g.equals(String compareStr)
    • the argument / the same sequence of characters
  • .equalsIgnoreCase(String compareStr)
    • equalsIgnoreCase method보다 case를 통일해서 비교하는게 속도가 더 빠르다.
  • .match(regex)
    • Tells whether or not this string matches the given regular expression.
  • .contains(CharSequence s)
  • .startsWith(), endsWith()

return String

  • .substring(int startIndex, int end)
    • startIndex < 0 || startIndex > string.length()
      runtime error 발생
    • startIndex == string.length()
      return "";
  • .replace(CharSequence target, CharSequence replacement)
  • .replaceAll(String regex, String replacement), replaceFirst
  • .concat(String str)
  • .repeat()
    • Java11+
  • String.valueof()
  • String.join(CharSequence delimiter, CharSequence... elements)
  • .toLowerCase(), toUpperCase()
  • .trim()
    • 앞 뒤 공백 제거

return String[]

  • .split(String regex, int limit)
    • ex) "boo:and:foo".split(":") => { "boo", "and", "foo" }
      "boo:and:foo".split("o") => { "b", "", ":and:f" }

return char

  • .charAt(int index)
    • !( 0 <= index < String.length() ) -> runtime error!

return char[]

  • .toCharArray()

byte[] .getBytes(?String charsetName)

File I/O에서 사용

regex (정규 표현식)

> regex 시각화 사이트

https://regexper.com/

reference: https://codechacha.com/ko/java-regex/

> Metacharacters

  • .: 어떤 문자 1개
  • ^regex: regex가 line의 처음인지
  • regex$: regex가 line의 마지막인지
  • [abc]: abc중 하나
  • [^abc]: abc를 제외한 문자 1개
  • X|Y: X또는 Y
  • \d: [0-9]
  • \D: [^0-9]
  • \w: [a-zA-Z_0-9]

> Quantifiers

  • *: 0회 이상
  • +: 1회 이상
  • ?: 0또는 1회만
  • {X}: X회 이상
  • {X, Y}: X~Y 사이의 수만큼

> Grouping

  • ()
  • $: group 번호
@Test
public void ex8() {
    String pattern = "(\\w)(\\s+)([\\w])";
    System.out.println("Hello     World".replaceAll(pattern, "-"));
	// Hell-orld
    pattern = "(\\w)(\\s+)([\\w])";
    System.out.println("Hello     World".replaceAll(pattern, "$1-$3"));
    // Hello-World
}
profile
programmerD

0개의 댓글