study/Java

[sist] 2024.01.19_Java : import, static import, 문자열 클래스, 날짜 클래스, 포맷 클래스

듀2 2024. 2. 26. 22:29

* import

- 다른 패키지의 클래스(인터페이스)를 사용할 때 필요한 코드.

- package 선언과 class 선언 사이에 필요한 만큼 정의한다.

- 같은 패키지의 다른 클래스나 java.lang 패키지의 클래스들은 import 없이 사용할 수 있다.

- JDK 1.5에서부터는 static import가 추가되었다.

- 문법)

// 특정 패키지의 하나의 클래스를 사용할 때.
import 패키지명.클래스명;

// 패키지 내의 모든 클래스를 import할 때.
imprt 패키지명.*;

package 패키지명;

import 패키지명.클래스명;

public class 클래스명{
    // import로 선언된 클래스를 사용할 수 있다.
}

package test;

import java.util.Date;

public class Test{
	public void test(){
    	Date d = new Date();
        // Test 패키지에는 Date가 존재하지 않으나 import를 받으면 존재하는 것처럼 사용할 수 있다.
    }
}

 

- import 클래스는 소스코드에서 몇 번이든 사용 가능.

- 주의 : 패키지명이 다르고 이름이 같은 클래스(인터페이스)는 둘 중 하나만 import 가능.

- import 없이 다른 패키지의 클래스를 사용할 때는 full path를 기술하여 사용한다.

패키지명.클래스명

package test;

public class Test{
    public void test(){
    	java.util.Date d = new java.util.Date();
        // import를 사용하지 않으면 클래스를 사용할 때마다 모든 패키지를 다 기술하여 사용한다.
    }
}

 


* static import

- JDK 1.5에서부터 지원되는 문법.

- 다른 클래스의 static 변수나 static method를 클래스명 없이 사용할 때.

- package와 class 사이에 정의.

 

- 문법)

 -> static 변수(상수)를 사용할 때 (주의 : 클래스는 다르고 상수명이 같다면 하나만 선언 -> 선언에서는 에러가 발생하지 않고, 사용하는 코드에서 error) : import static 패키지명.클래스명.상수명;

 -> static method 사용할 때 (주의 : method 기호는 붙이지 않는다.) : import static 패키지명.클래스명.method명;

 

- 사용법)

변수명, 상수명
method명(값)

package test;

import static java.lang.Integer.MAX_VALUE;

public class Test{
    // Integer.MAX_VALUE로 써야하나 클래스명을 제외한 상수명으로만 사용 가능
    MAX_VALUE
}

 


* 문자열 다루기

* String

- 짧은 문자열을 다룰 때 사용

- 중복 문자열을 저장하지 않는다.

- "로 시작하여 끝나는 문자열 : "안녕하세요"

 

* StringBuffer

- 긴 문자열을 다룰 때 사용. 중복 문자열을 저장한다.

- 연결되는 문자열 "안녕"+"하세요"

- JDK 1.1에서부터 제공, 속도 느림

- 동기화 처리 - multi-thread에서 동시접근 불가능

 

* String Builder

- 긴 문자열을 다룰 때 사용. 중복 문자열을 저장한다.

- 연결되는 문자열 "안녕"+"하세요"

- JDK 1.5에서부터 제공, 속도 빠름

- 동기화X - multi-thread에서 동시접근 가능

 

- 사용법)

// 1. 생성)
StringBuffer sb = new StringBuffer();	// 기본생성자
StringBuilder sb2 = new StringBuilder("hello");

// 2. 값 붙이기) - 값은 문자열로 붙는다.
sb.append(값);

int i = 43;
sb2.append(i);

 

boolean flag = true;
sb.append(flag);
sb.append("ㅇㅇㅇ");

// 3. 기존 값 사이에 값 삽입
// sb.insert(위치, 값);
sb.insert(4, " 수원시의 자랑 ");

// 4. 삭제
// sb.delete(시작인덱스, 끝인덱스+1)
sb.delete(10, 13);

// 5. 문자열 순서 변경(뒤집기)
sb2.reverse(); // => 34olleh

 

* StringTokenizer

- 문자열을 짧은 한 마디(token)로 자를 때 사용하는 클래스.

- java.util 패키지에서 제공(import)를 정의하여 사용.

- 문자열을 가지고 있지 않고(데이터의 크기를 모름), 문자열의 제어권만 받아서 문자열을 잘라낸다.

 

- 사용법)

- 대상)

String data = "자를 대상 문자열";

 

// 1. 생성)
StringTokenizer stk = new StringTokenizer(data); // 공백으로 토큰을 생성

StringTokenizer stk = new StringTokenizer(data, "기준문자열");
// 기준문자열로 토큰을 생성, 기준문자열은 토큰에서 제외(기준 문자열은 or 기능)
// -> 기준문자열에 해당되는 것은 모두 자른다.

StirngTokenizer stk = new StringTokenizer(date, "기준문자열", boolean);
// 기준문자열로 토큰을 생성, 기준문자열을 토큰으로 포함할 것인지를 선택 

// 2. 토큰의 수) - 토큰을 얻을 때마다 줄어든다.(가변적)
int cnt = stk.countTokens();

// 3. 토큰이 존재하는지?
boolean flag = stk.hasMoreTokens();

// 4. 토큰이 있다면 값(토큰)을 얻고 포인터를 다음으로 옮기는 일
String token = stk.nextToken();

 


* java.util.Date

- 날짜 얻을 때 사용하는 클래스.

- 비추천 method가 많은 클래스. -> 단독으로 사용하지 않고 java.text.SimpleDateFormat 클래스와 함께 사용한다.

- import java.util.Date를 받아서 사용.

 

- 사용법)

// 1. 생성)
Date d = new Date();

// 2. method 호출)
// -> 비추천 method가 많아 사용하지 않는다.

 


* SimpleDateFormat

- 날짜를 지정된 형식으로 반환하는 일

 

- 사용법)

// 1. 객체생성) => 날짜를 모름
SimpleDateFormat sdf = new SimpleDateFormat(pattern);

// pattern -> Letter를 반복시켜 사용자에게 제공하고 싶은 날짜 형식을 만든다.

// letter : 년-y, 월-M, 일-d, 오전/오후-a, 12시간-h(1~12),K(0~11), 24시간-H(0~23), k(1~24)
// 분-m, 초-s, 요일-E

// 2. method) => 일
String format = sdf.format(new Date());

// sdf객체에서 Date객체를 입력받아 현재 시스템의 원하는 날짜 정보로 반환

 

* 클래스 간에 관계를 설정하는 이유

 => 다른 클래스가 제공하는 기능을 사용하기 위해서!!

 

- is a 관계 (상속관계)

: 다른 클래스가 제공하는 기능을  내 클래스에서 정의된 것처럼 사용하기 위해. -> 자식 클래스만 생성하면 부모가 생성되기 때문에.

 

- has a 관계

: 다른 클래스의 객체를 받아들여 객체명으로 입력 받을 클래스의 기능을 사용하기 위해. -> 객체가 생성되고, 객체명을 계속 사용해야 한다.

728x90