onboarding 2주차 학습내용
TV는 SmartTV의 부모 객체일 때, TV tv = new SmartTV(); 가 가능하다.
객체의 다형성이 적용된 결과. 대신 SmartTV에 선언된 메소드들 중 TV에 선언된 메소드와 일치하는 메소드만 호출 가능하며, 메소드는 SmartTV 메소드를 사용한다.
Console Class
Scanner 클래스를 통해 입력을 받는 클래스인듯.
readLine (In : None / Out : String)
이너 메소드인 getInstance를 통해 scanner를 가져와서 사용자로부터 새로운 입력을 받아 String으로 리턴한다.
getInstance (In : None / Out : Scanner)
scanner가 Null이거나 isClosed가 참이면 새로운 Scanner의 인스턴스를 만들어 반환한다.
isClosed (In : None / Out : Boolean)
public Field getDeclaredField(String name)
Objects.*requireNonNull*(name);
: 주어진 문자열이 null이면 NPE, 아니면 그 값을 리턴 - Nullity checkpublic static SecurityManager getSecurityManager()
: security manager가 이미 생성됐다면 이를 return. 아니면 Null retrun → smthrow new NoSuchFieldException(name);
: 만약 주어진 field를 몾찾으면 예외 생성.nextLine() : 엔터가 들어오기 전까자의 문자열을 받음
엔터를 기준으로 종료하기 때문에 이전의 입력에서 엔터가 남아있다면 넘어가버리는 오류가 발생할 수 있다. 주의하자.
next() : 공백이 들어오기 전까지의 문자열을 받음
Randoms Class
public static native Thread currentThread()
: static 메소드로 호출한 쓰레드의 객체를 반환함.
ThreadLocalRandom.*current*()
: 멀티쓰레드 환경에서 서로 다른 인스턴스들에 의한 난수를 반환하므로 경합을 하지 않아 동시성에 안전한 방법.
Java는 Seed를 지정하지 않으면 컴퓨터의 현재 시간을 이용하여 난수에 대응한다.
public static int pickNumberInList(final List<Integer> numbers)
: numbers 리스트가 비어있는지 체크한 후 넘버 생성.