System 클래스 용도
- 운영체제의 기능 일부 이용 가능
- 프로그램 종료, 키보드로부터 입력, 모니터 출력, 메모리 정리, 현재 시간 읽기 등
- 시스템 프로퍼티 읽기, 환경 변수 읽기 등
exit()
메소드
- 프로그램 종료
- 강제적으로 JVM 종료
- int 매개값 지정 - 종료 상태 값
exit(0) / exit(1)
- 정상 종료 : 0
- 비정상 종료 : 0 이외의 값
- 어떤 값 주더라도 종료
System.exit(0)
특정값이 입력되었을 경우에만 종료
- 자바의 보안 관리자를 직접 설정해서 종료 상태값 확인 (System.setSecurityManager())
- System.exit()이 실행되면 보안 관리자의 checkExit() 메소드가 자동 호출되는데
- 이 메소드에서 종료 상태값을 조사해서 특정 값이 입력되지 않으면 SecurityException을 발생시켜 System.exit()을 호출한 곳에서 예외 처리할 수 있도록 함
- checkExit() 메소드 재정의
현재 시간 읽기
currentTimeMillis()
: 밀리 세컨드
nanoTime()
: 나노 세컨드 단위의 값 리턴
- 주로 프로그램 실행 소요 시간 구할 때 이용
시스템 프로퍼티 읽기 (getProperty())
- 시스템 프로퍼티 : JVM이 시작할 때 자동으로 설정되는 시스템의 속성값
- 대표적인 키와 값 (key, value)
환경 변수 읽기 : getenv()
- 운영체제가 제공하는 환경 변수 값(문자열)을 읽음
String 클래스
String 생성자
키보드로부터 읽은 바이트 배열을 문자열로 변환
윈도우
- 영문 : 1바이트, 한글 : 2바트, 엔터 : 2바이트
맥
- 영문 : 1바이트, 한글 : 3바이트. 엔터 : 1바이트
String 메소드
- 문자열의 추출, 비교, 찾기, 분리, 변환 등과 같은 다양한 메소드 포함
사용 빈도 높은 메소드
문자 추출 : charAt(인덱스)
바이트 배열로 변환 (getBytes())
문자열 찾기 (indexOf(“문자열”))
- 매개값으로 주어진 문자열이 시작되는 인덱스 반환
- 주어진 문자열이 포함되어 있지 않으면 -1 리턴
- 특정 문자열이 포함되어 있는지 여부에 따라 실행 코드 달리할 때 사용
주의! 문자열 길이 (length()) - 공백도 문자에 포함
문자열 대치 : replace(“문자열1”, “문자열2”)
- 첫 번째 매개값인 문자열을 찾아서
- 두 번째 매개값인 문자열로 대치
- 새로운 문자열 리턴
문자열 잘라내기 : substring()
-
문자열 일부 추출
-
substring(int beginIndex, int endIndex)
-
주어진 시작과 끝 인덱스 사이의 문자열 추출
-
beginIndex부터 endIndex-1까지
-
substring(int beginIndex)
-
beginIndex부터 끝까지 문자열 추출
알파벳 소/대문자 변경 : toLowerCase() / toUpperCase()
- 문자열을 모두 소문자/대문자로 바꾼 새로운 문자열을 생성한 후 반환
- 원래 문자열이 변경된 것은 아님
문자열의 앞뒤 공백 잘라내기 : trim()
- 문자열의 앞뒤 공백을 제거한 새로운 문자열을 생성해서 리턴
문자열 변환 : valueOf()
- 기본 타입의 숫자값을 문자열로 변환
- String 클래스에 매개변수 타입별로 메소드 오버로딩되어 있음
- static 메소드 :
String.valueOf()
문자열 분리 방법
String tel = “010-1234-1234”;
String[] tels = tel.split(“-”);
StringTokenizer 클래스
문자열 결합 연산자 : +
- String은 내부의 문자열 수정 불가
- 대치된 새로운 문자열 리턴
StringBuffer, StringBuilder 클래스
- 버퍼에 문자열 저장
- buffer : 데이터를 임시로 저장하는 메모리
- 버퍼 내부에서 추가, 수정, 삭제 작업 가능
- 멀티 스레드 환경 : StringBuffer 사용
- 단일 스레드 환경 : StringBuilder 사용
정규 표현식 (Regular Expression)
- 문자열이 정해져 있는 형식으로 구성되어 있는지 검증할 때 사용
- 예 : 이메일, 전화번호, 비밀번호 등
문자, 숫자, 기호, 반복 기호 등이 결합된 문자열
Pattern 클래스
- 정규 표현식으로 문자열을 검증하는 역할
matches(“정규식”, “입력된 문자열”);
- 결과는 boolean 타입
Arrays 클래스
- 배열 조작 기능을 가지고 있는 클래스
- 복사, 정렬, 검색 등
- 제공하는 정적 메소드 :
Arrays.copyOf(), Arrays.sort()
Arrays 클래스 메소드
배열 복사
Arrays.copyOf(원본배열, 복사할 길이)
- 0 ~ (복사할 길이 -1)까지 항목 복사
copyOfRange (원본배열, 시작 인덱스, 끝 인덱스)
- 시작 인덱스 ~ (끝 인덱스-1)까지 항목 복사
배열 항목 정렬 : Arrays.sort(배열)
- 항목 오름차순으로 정렬
- 기본 타입이거나 String 배열 자동 정렬
배열 항목 검색 : Arrays.binarySearch()
- 특정 값 위치한 인덱스 얻는 것
- Arrays.sort(배열)로 먼저 정렬하고
Arrays.binarySearch(배열, 찾는 값)
메소드로 항목 찾기
Math 클래스
- 수학 계산에 사용할 수 있는 정적 메소드 제공
Random 클래스
- boolean, int, long, float, double 난수 리턴
- 난수를 생성하는 알고리즘에 사용되는 종자값(seed) 설정 가능
- 종자값이 같으면 동일한 난수 발생
Random r = new Random():
int x = r.nextInt(10) +1;
int num = (int)(Math.ramdom() * 10 ) +1;
Random 클래스로부터 Random 객체 생성하는 방법
Random() // seed 값 없을 경우
- 현재 시간을 초기값으로 하는 난수 발생
- 실행할 때마다 다른 난수 발생
Random(seed)
- seed 값을 초기값으로 하는 난수 발생
- 실행할 때마다 동일한 난수 발생
Random 클래스가 제공하는 메소드
Date 클래스
import java.util.Date;
Date now = new Date();
- 날짜 형식 클래스
import java.text.SimpleDateFormat;
Calendar 클래스
- 달력을 표현한 추상 클래스
- OS에 설정된 시간대(TimeZone) 기준의 Calendar 객체 얻기
Calendar now = Calendar.getInstance();
- 다른 시간대의 Calendar 객체 얻기
날짜 및 시간 정보 얻기
- 일정한 형식으로 문자열 포맷
- 문자열 데이터가 들어갈 자리를 표시해 두고
- 프로그램 실행 중에 동적으로 데이터를 삽입해 문자열 완성
날짜와 시간을 표현하는 5개 클래스