관리 메뉴

MOMONOTE

자바 API 클래스 본문

JAVA/JAVA (basic)

자바 API 클래스

momo0503 2021. 1. 13. 17:27

API는 라이브러리라고도 부른다. 프로그램 개발에 자주 사용되는 클래스 및 인터페이스의 모음을 말한다.

String , System 클래스 모두 API에 속하는 클래스들이다.

 

8버전 보려면 11을 8로

docs.oracle.com/en/java/javase/11/docs/api/index.html 

 

Overview (Java SE 11 & JDK 11 )

This document is divided into two sections: Java SE The Java Platform, Standard Edition (Java SE) APIs define the core Java platform for general-purpose computing. These APIs are in modules whose names start with java. JDK The Java Development Kit (JDK) AP

docs.oracle.com

 

java.lang 패키지는 기본적인 클래스담고 , import 없이 사용 가능하다. 자주 사용하는 Math.~~ (Math 클래스)도 lang 패키지에 있어 import 없이 사용 한다.  Object 클래스는 자바 클래스의 최상위 클래스다. 일반적으로 클래스를 생성할때 기본적으로 Object 클래스를 상속받는다.

 

java.util 패키지는 컬렉션 클랙스들이 많다. 자주 사용하는 Scanner 클래스도 util 패키지다 이외에 Arrays, StringTokenizer. Random 클래스도 util 패키지다. 

 

Object 클래스의 toString() 메소드는 객체의 문자 정보(객체를 문자열로 표현한값) 를 리턴한다. 

대개 리턴값은 java.lang.Object@asdjnwelandi 이런식 

Object의 하위 클래스에서 toString()을 오버라이딩하여 의미있는 정보로 리턴한다. 

예를 들어 Date객체.toString() 시 Date 정보가 리턴된다.

 

java.util.objects 클래스는 객체 비교, 문자열 리턴 등의 연산을 수행하는 Object의 유틸 클래스다. compare 메소드는 두 객체를 비교한다. 자세한 건 직접 문서를 보는것이 좋을듯.

 

java.lang 패키지의 System 클래스는 운영체제의 일부 기능을 이용할 수 있다. exit() 메서드를 사용하여 프로세스를 종료하던가 gc() 를 수행하여 가비지 컬렉팅을 빠르게 실행하라는 요청을 할 수 있다. 또한 currentTimeMillis(), nanoTime() 메소드는 컴퓨터의 시계를 기준으로 시간을 읽어 각각 단위에 해당하는 시간을 long 타입으로 반환한다.  더 자세한 사항은 직접 문서를 보는것이 좋을듯 하다. 

 

String 클래스 

문자열을 생성,비교,변환 등을 제공한다. java.lang 패키지의 String 클래스의 인스턴스로 관리된다.

String 클래스의 메서드들은 자주 사용된다. 각 메서드들의 사용과 특징을 잘알아두자. 

 

리턴 타입 메소드명(매개변수) 설명
char charAt(int index) 특정 위치의 문자를 리턴,  charAt(0) 이면 첫번째 문자를 char 형태로 리턴한다.
boolean equals(Object object) 두 문자열을 비교한다. 
int  indexOf(String str) 특정 문자열의 위치를 구한다. 찾지 못하면 -1 리턴
lastIndexOf()는 특정 문자열을 뒤에서 부터 처음 발견되는 인덱스를 앞에서부터 세어서 리턴. 마찬가지로 찾지 못하면 -1 리턴
int length() 문자길이 리턴, 배열에선 소괄호 빼고 배열 길이를 구했었다.
boolean contains(String str) str이 문자열이 전체 문자열에 포함되어 있는지 검사한다.
String substring(int startIndex) startIndex부터 끝까지 잘라낸 새로운 문자열을 리턴한다.
String  substring(int startIndex, int endIndex startIndex이상 endIndex 미만 잘라낸 새로운 문자열을 리턴한다.
String  toUpperCase() , toLowerCase() 각각 대문자, 소문자로 변환뒤 리턴
String trim() 앞뒤 공백을 제거한 새로운 문자열을 리턴
String replace(CharSequence target, CharSequence replacement) target을 replacement로 바꾼 문자열 리턴
String valueOf(기본타입 a) 기본타입 (int, double, float 등등 다)을 문자열로 바꾸어 리턴한다.
     
String[ ]  String[] arr = "문자열".split("정규표현식"); 정규 표현식을 구분자로 해서 문자열을 분리한 후, 배열에 저장하고 리턴한다.

이 이상은 직접 찾아보자.

 

 

StringTokenizer 클래스

StringTokenizer st = new StringTokenizer("문자열", "구분자"); 

손쉽게 문자열을 분리할 수 있다. 만약 구분자를 생략하면 공백이 구분자가 된다.

문자열을 잘라 토큰화 한다고 생각하면된다. 

리턴타입  메소드 설명
int nextToken() 토큰을 하나씩 가져온다. 보통 남아 있는 토큰이 있는지 확인 후 반복문을 이용하여 토큰들을 배열이나 컬렉션에 저장하거나 , 콘솔에 출력하는 경우가 많았다.
boolean hasMoreTokens() 남아 있는 토큰의 여부를 boolean형태로
int  countTokens() 남은토큰수

 

만약 nextToken()시 가져올 토큰이 없다면 예외를 발생시킨다.

 

 

String , StringBuffer, StringBuilder 클래스

String과 StringBuffer,StringBuilder의 차이점은 String은 한번 선언하고 저장하면 메모리 공간을 계속 차지한다. 불변의 특징을 갖는다.

String 변수에 어떤 데이터를 저장하고, +연산자로 문자열을 더 추가할 경우 초기에 선언한 경우 힙 영역에는 초기의 String 변수 는 그대로 있고 ,+연산자로 추가된 것이 힙 영역에 새로 추가된다. 그리고 스택 영역의 String 변수는 힙 영역에 새로 추가된 것을 가르킨다.  String 변수를 이용해 연산자를 많이 사용할 경우 힙 영역에 메모리 낭비가 심해진다. 

StringBuffer와 StringBuilder는 버퍼를 사용하여 문자열을 저장해두고 그 안에서 추가 수정 삭제한다. 연산이 적으면 String이 좋을 수 있지만 연산이 많아지면 StringBuffer와 StringBuilder를 이용한다.

 

StringBuffer와 StringBuilder의 차이는 전자는 멀티스레드환경에서 사용할 수 있도록 되있고, StringBuilder는 단일 스레드 환경에서만 사용하도록 설계되있다. 

 

StringBuilder sb = new StringBuilder(); // StringBuilder객체 생성

sb.append("abcdef");  //문자열을 끝에 추가.
sb.append("가나다라");

sb.insert(5,"2"); // 5번째 인덱스에 2를 삽입, 5번째 이후는 뒤로 밀려난다. 

sb.replace(0,6,"xyz"); // 0이상 6미만의 인덱스를 xyz로 대체 

sb.delete(1,3); // 1이상 3미만 인덱스를 삭제 

sb.length(); //총문자수 

sb.setCharAt(3,'4'); // 3번 인덱스의 문자를 4로 변경

String a = sb.toString(); //버퍼에 있는것을 String 타입으로 리턴

sb.reverse(); // 문자열의 순서를 뒤바꾼다.

 

 

 

정규표현식(Regular Expression)이란 특정한 규칙을 가진 문자열의 집합을 표현하기 위해 쓰이는 형식언어 입니다. 전화번호나 이메일 형식을 지정할때 정규표현식을 사용합니다.  문자나 숫자 특수문자 등의 정해진 패턴을 정해준다. 전화번호의 010-xxxx-xxxx 는 앞에 숫자 3개와 - 숫자 4개와 - 숫자 4개 형식으로 되있는것인데 이 형식으로만 표현하게 하는것이다.

 

자주쓰는 정규식 기호 

기호 설명 기호 설명
[ ]  문자 한개 [abc] a,b,c 중 하나의 문자
[^abc] a,b,c 이외의 하나의 문자 [a-zA-Z] a~z, A~Z 중 하나의 문자
\d 미리 정의된 문자, 0-9 중한개의 숫자 \D 숫자가 아닌것 [^0-9]
\w 미리 정의된 문자고 알파벳 또는 숫자 한개[a-zA-Z_0-9] 와동일 \W 알파벳 단어가 아닌것[^\w]
\s 공백 ? 없거나 한개
* 없거나 1개 이상 + 한개이상
{n} 고정횟수 출현 , n 번출현하는것이다. 
a{3}bcd - > aaabcd
{n,} n 부터 무한대로 출현
{n, m} n이상 m 이하로 출현    

 

 

docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/regex/Pattern.html

 

Pattern (Java SE 11 & JDK 11 )

Enables canonical equivalence. When this flag is specified then two characters will be considered to match if, and only if, their full canonical decompositions match. The expression "a\u030A", for example, will match the string "\u00E5" when this flag is s

docs.oracle.com

정규식 표현의 자세한 기호는 이곳에서 참조한다. 

 

Pattern 클래스

java.util.regex.Pattern 클래스의 matches() 메서드는 뮨자열을 정규 표현식으로 검증하는 기능이 있다.

boolean a = Pattern.matches("정규식" , "검증할 문자열");

 

 

Arrays 클래스

배열 정렬, 복사 등의 기능이 있다. 알고리즘을 풀이할 때 오름차순으로 정렬하는 Arrays.sort() 메서드를 종종 사용한다.

java.util.Arrays 를 import 하고, 모든 메서드는 정적 메서드여서 객체 생성하지 않고 바로 사용가능하다.

리턴 타입 메서드 이름 설명
void sort 배열의 전체 요소들을 오름차순으로 정렬한다. 
타겟 배열 copyOf(원본배열, 복사할 길이) 원본배열의 0번째 인덱스부터 복사할 길이만큼 복사후 타겟 배열을 리턴한다
타겟 배열 copyOfRange(원본배열,시작인덱스,끝인덱스) 원복배열의 시작인덱스이상 끝인덱스미만 까지를 복사후 타겟 배열을 리턴한다.
void fill(배열, 값) 전체 배열의 요소에 동일한 값을 저장, 초기화 할때 유용
void fill(배열, 시작인덱스,끝인덱스,값) 배열의 시작인덱스, 끝인덱스미만 까지에 동일한 값을 저장
int binarySearch(배열 ,찾는값) 이진검색을 하려면 우선 배열이 정렬되어 있어야 한다. 배열 정렬 후 찾는 인덱스의 값을 리턴한다.  한글 자음을 오름차순으로 정렬하면 ㄱ,ㄴ,ㄷ,ㄹ ... 이다. 

 

이진 탐색이란 정렬된 데이터 있는 배열에서 특정한 값을 찾아내는 알고리즘이다.  배열에서 중간값을 찾고 그보다 크고 작음을 검사 후 새로운 기준을 다시정해 찾아가는 .. 자세한 설명은 생략.  

 

 

이외에도

 

Format 클래스

 

Wrapper 클래스

 

Math 클래스(java.lang,Math 패키지로 import 하지않아도 되고 모든 메서드가 static 이므로 바로 사용 가능하다.)

 

Random 클래스 (java.util.Random 패키지, Math 클래스의 Math.random()과 다른점은 Math.random()은 0.0이상 1.0 미만의 double 형의 난수를 얻고 알맞게 연산하여 원하는 범위의 난수를 발생시키는 반면, Random클래스는 boolean, int,l long, float, double 난수를 얻을 수 있다.)

 

등이 있다.

'JAVA > JAVA (basic)' 카테고리의 다른 글

제네릭  (0) 2021.02.03
자바 컬렉션 프레임워크  (0) 2021.01.15
예외  (0) 2021.01.13
중첩 클래스, 중첩 인터페이스  (0) 2021.01.13
인터페이스  (0) 2021.01.13
Comments