배열 , Array
- 배열은 크기가 고정되어 있고 데이터 다루기 불편
- 따라서 List등으로 변경해서 처리할 필요가 있음
- Arrays 클래스의 모든 메서드는 static이므로 인스턴스 생성 없이 사용 가능
asList()
- 배열을 ArrayList로 반환해 자바 컬렉션 API를 사용할 수 있다.
- 다만 반환되는 ArrayList는 크기가 고정된 타입으로 새롭게 값을 추가할 수 없다.

toString()
- 모든 자바 Object에 포함된 메서드로 기본은 Object ID를 출력함
- 배열 자체를 System.out.println() 등에서 출력하면 데이터가 출력되지 않고 Object ID가 출력된다
- Arrays.toString()을 이용하면 데이터를 출력할 수 있음

sort()
- 배열원소를 정렬
- sort(array,Comparator) , sort(array,int fromindex, int toindex)를 이용해 내림차순 정렬 및 구간 정렬 가능
- 구간 정렬의 경우 fromindex ~ toindex-1 까지를 범위로 한다

-> 역정렬후 , 구간정렬로 0~2-1 까지 범위로 정렬
copyOf()
- 배열을 복사해서 새로운 배열로 반환
- copyOfRange()는 특정 범위만 반환
- 구간 복사의 경우 fromindex ~ toindex-1 까지 범위

다차원 배열
하나 이상의 배열을 포함하고 있는 배열의 구조

Scanner
입력 스트림으로 부터 데이터를 읽어오기 위한 유틸리티 클래스
java.util 패키지를 import 해주어야 한다.

- Scanner 객체 생성시 입력 스트림을 지정할 수 있음
- 입력값을 문자열로 반환하는
next() 를 비롯해 nextInt() 등 데이터 타입에 따른 메서드 존재
- 입력값이 공백으로 구분되어 한줄로 입력될 경우 공백을 기준으로 다음 데이터를 찾게 됨
- 한줄 전체를 문자열 입력으로 처리하려면
nextLine()을 사용
hasNext()는 다음 데이터가 있는지 true/false로 알려줌
로깅 , logging
프로그램에서 기록을 위해 메세지를 남기는 것을 로깅이라고 한다
ex) 웹서버의 경우 모든 사용자의 접속 데이터를 서버 로그로 저장하고 있다.
지금까지 우리는 System.out.println() 을 사용해 왔는데 이는 콘솔에 메세지를 출력하는 것으로 실제 우리가 사용하는 프로그램들은 GUI를 통해 화면에 메세지가 출력되므로 System.out.println()을 사용할 일이 없다.
-> 실제 프로그램 개발에는 로그 메세지들을 매일 새로운 파일에 저장하거나 파일 용량이 일정 크기 이상이 되면 다른 파일로 생성하고 3달이상 지난 로그들은 삭제한다던가 하는 작업들이 필요
로깅 프레임워크(Logging Framework)
앞의 문제점들을 해결하기 위한 소프트웨어 : log4j , slf4j, logbakc 등이 유명
java.util.logging
기본으로 제공되는 로깅 라이브러리 적절한 의미에 맞게 사용해야 함
- SEVERE : 가장 심각한 레벨로 시스템에 문제가 발생한 경우 사용
- WARNING : 문제를 발생시킬수도 있는 잠재적 문제 발생시 사용
- INFO : 정보성 메세지로 실행기록 , 입력값 확인 등에 사용
- CONFIG : 프로그램의 설정관련 메시지
- FINE : 프로그램 분석등을 위한 정보 출력에 사용
- FINER : 비교적 상세한 Trace 메시지로 특정 함수, 클래스 진입 , 리턴등에 대한 정보
- FINEST : 가장 상세한 Trace 메시지로 시스템의 정보나 송수신된 메시지 전문 등
