본문 바로가기
  • 실행력이 모든걸 결정한다
Spring 사전 준비/JAVA

[JAVA 간단정리 4] 인터페이스/싱글톤/API(문자열,날짜,랜덤)

by 김코더 김주역 2020. 11. 16.
반응형

인터페이스

객체간의 소통 수단을 의미한다.
추상메소드와 상수만이 존재하며, 일반 메소드로 사용 시 에러가 난다.
인터페이스는 객체가 아니지만, 객체 타입으로만 사용된다.

public class InterfaceClass implements Itf1,Itf2 {
	//인터페이스에 대한 override 필요
}
public interface Itf1 {

}
public interface Itf2 {

}

객체 타입으로 인터 페이스를 쓸 수도 있다.
InterfaceClass interfaceClass = new InterfaceClass();
Itf1 itf1 = new InterfaceClass();
Itf2 itf2 = new InterfaceClass();

※ 다형성 : 객체가 다양하게 변할 수 있다는 점

 

싱글톤

단 하나만 존재할 수 있는 객체

public class SingletoneClass {
    private static SingletonClass ST = new SingletonClass();
    
    //private 이므로 싱글톤 객체는 외부에서 생성 불가하고,
    private SingletonClass(){}
    
    //여기에서 get함수를 통해 싱글톤 객체를 반환하는 것이다.
    public static SingletonClass getSingletonClass(){
        if(ST == null) ST = new SingletonClass();
        return ST;
    }
    
    ... SingletonClass 안의 변수, 메소드
}

싱글톤 객체 생성쪽

SingletonClass singletonClass = SingletonClass.getSingletonClass();

 

API

Application Programming Interface, 쉽게 설명하자면 누군가가 만들어 놓은 기능.

1. String API (String s1)

s1.concat(s2) : s1뒤에 s2 문자열 연결
s1.substring(x1, x2) : s1에서 인덱스 x1~x2 범위의 문자열 추출 (x2위치 포함 안함)
s1.length() : s1의 길이
s1.toUpperCase() : s1을 모두 대문자로
s1.toLowerCase() : s2를 모두 소문자로
s1.charAt(x) : s1의 x번째 인덱스
s1.indexOf(s2) : s1내 에서 문자열 s2의 위치(인덱스 반환)
s1.equals(s2) : s1와 s2비교
s1.trim() : s1의 앞뒤 공백 제거
s1.replace(s2, s3) : s1에 있는 문자열 s2를 모두 s3로 변경
s1.replaceAll(f, s2) : s1에서 정규식 f 에 해당하는 모든 문자열들을 모두 s2로 변경

------------------------------------------------------------------------------

1-2. StringTokenizer

문자열 분할 클래스

import java.util.StringTokenizer;

-main 클래스-
String str = "2020/11/17";
StringTokenizer sT = new StringTokenizer(str, "/"); //2번째 인자 생략 시 " " 가 기준이됨
int cnt = sT.countTokens(); //분할 된 문자열 조각 수
while(sT.hasMoreTokens()){ //순회
    System.out.println(sT.nextToken());
}


String 객체는 메모리를 과소비한다는 단점이 있다.
데이터에 변화가 생기면 기존 것을 재활용 하지 않고 새 메모리를 만들어버린다.
이를 보완할 만한 클래스로 StringBuffer, StringBuilder가 있다.
StringBuffer : 2개 이상의 thread의 동시 접근을 허용 안해서 thread-safe.
StringBuilder : thread-safe 하지 않지만, StringBuffer보다 빠름.
<둘 다 같은 메서드를 갖기 때문에 StringBuilder 기준으로만 정리할 것>

------------------------------------------------------------------------------

2. StringBuilder

StringBuilder stringBuilder = new StringBuilder(s1);
stringBuilder.append(s2) : s2 문자열 연결
stringBuilder.insert(x,s2) : x위치에 s2 문자열 삽입
stringBuilder.delete(x1, x2) : 인덱스 x1~x2 범위의 문자열 삭제 (x2위치 포함 안함)
stringBuilder.deleteCharAt(x) : x위치의 문자 하나 삭제
stringBuilder.toString() : String 형으로 반환

------------------------------------------------------------------------------

3. 날짜 API

Calendar calendar = Calendar.getInstance();
calendar.get(Calendar.YEAR) : 몇년
calendar.get(Calendar.MONTH) + 1 : 몇월 (0부터 시작이라 1을 더함)
calendar.get(Calendar.DAY_OF_MONTH) : 며칠
calendar.get(Calendar.HOUR_OF_DAY) : 몇시
calendar.get(Calendar.MINUTE) : 몇분
calendar.get(Calendar.SECOND) : 몇초
System.currentTimeMillis() : 현재의 시간을 1/1000초 단위로 long형으로 반환
이를 두 지점에 호출해주면 속도 테스트 용으로 쓸 수 있다.

------------------------------------------------------------------------------

4. Random

double d = Math.random(); //API, 0~1 사이 반환

import java.util.Random;
Random random = new Random(); //클래스
int r = random.nextInt(1000); //0~1000 사이로 설정
반응형

댓글