HRD_훈련/JAVA

[JAVA] StringBuffer, StringTokenizer, Calendar (18일차)

리드미. 2023. 6. 9. 19:39
728x90
반응형

<오늘의 학습>

1. Collections 클래스 문제

2. StringBuffer

3. StringTokenizer

4. Calendar

5. HashMap 반환

 

 

1. Collections 클래스 문제

 

[JAVA] Collections 클래스 문제 (18일차)

Collections 클래스 문제 숫자 5개를 스캐너로 입력 받아서 ArrayList에 넣기 Collections 클래스의 sort를 이용해 정렬하기 출력 ex) 3->5->6->8->10 main 코드 //list의 내용을 순서대로 출력 static void printList(ArrayL

deliciouscode.tistory.com

 

 

 

 

2. StringBuffer 클래스

▶ StringBuffer 클래스의 특징

  • 가변 크기의 문자열 저장 클래스
    • Java.lang.StringBuffer
    • String 클래스와 달리 문자열 변경이 가능하다.
    • StringBuffer 객체의 크기는 스트링 길이에 따라 가변적이다.
  • 생성 : StringBuffer sb = new StringBuffer("java");

 

 

StringBuffer 클래스의 생성자

생성자 설명
StringBuffer() 초기 버퍼의 크기가 16인 스트링 버퍼 객체 생성
StringBuffer(charSequence seq) seq가 지정하는 일련의 문자들을 포함하는 스트링 버퍼 생성
StringBuffer(int capacity) 지정된 초기 크기를 갖는 스트링 버퍼 객체 생성
StringBuffer(String str) 지정된 스트링으로 초기화된 스트링 버퍼 객체 생성

 

 

▶ StringBuffer 클래스의 주요 메소드

메소드 설명
int capacity() 스트링 버퍼의 현재 크기를 리턴한다.
StringBuffer append(String str) str 스트링을 스트링 버퍼에 덧붙인다.
StringBuffer append(StringBuffer sb) sb 스트링 버퍼를 현재의 스트링 버퍼에 덧붙인다.
StringBuffer delete(int start, int end) start 위치에서 end 위치 앞까지 부분 문자열을 삭제한다.
StringBuffer insert(int offser, String str) str 스트링을 스트링 버퍼의 offset 위치에 삽입한다.
StringBuffer replace(int start, int end, String str) 스트링 버퍼 내의 start 위치의 문자부터 end가 지정하는 문자 앞의 서브 스트링을 str로 대치
StringBuffer reverse() 스트링 버퍼 내의 문자들을 반대 순서로 변경한다.
void setLength(int newLength) 스트링 버퍼 내 문자열 길이를 newLength으로 재설정한다.
현재 길이보다 큰 경우 널 문자(' ')로 채우며 작은 경우에는 기존 문자열을 자른다.

 

 


▷ 사용 예제

		StringBuffer sb = new StringBuffer("a"); //a
		sb.append(" pencil"); //a pencil
		sb.insert(2, "nice "); //a nice pencil
		sb.replace(2, 6, "bad"); //a bad pencil
		sb.delete(0, 2); //bad pencil
		sb.reverse(); //licnep dab
		
		int n = sb.length();
		char c = sb.charAt(3); //n
		
		sb.setLength(3); //lic

 

 

 

3. StringTokenizer 클래스

▶ StringTokenizer 클래스의 특징

  • java.util.StringTokenizer
  • 하나의 문자열을 여러 문자열로 분리한다.
    • 문자열을 분리할 때 사용되는 기준 문자 : 구분 문자(delimiter)
      • ex) ‘&’, '/' 등의 구분 문자
    • 토큰(token) : 구분 문자로 분리된 문자열
  • String 클래스의 split() 메소드를 이용하여 동일한 구현이 가능하다.

 

 

▶ StringTokenizer 클래스의 생성자

생성자 설명
StringTokenizer(String str) str 스트링의 각 문자를 구분 문자로 문자열을 분리하는 스트링 토크나이저를 생성
StringTokenizer(String str, String delim) str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저 생성
StringTokenizer(String str, String delim, boolean returnDelims) str 스트링과 delim 구분 문자로 문자열을 분리하는 스트링 토크나이저를 생성.
returnDelims가 true이면 delim이 포함된 문자도 토큰에 포함된다.

 

 

StringTokenizer 클래스의 주요 메소드

메소드 설명
int countTokens() 스트링 토크나이저가 분리한 토큰의 개수 리턴
boolean hasMoreTokens() 스트링 토크나이저에 다음 토큰이 있으면 true 리턴
String nextToken() 스트링 토크나이저에 들어있는 다음 토큰 리턴

 

 


▷ 예제) 문자열을 입력받고, 공백을 기준으로 문자열을 분리하시오.

		Scanner scan = new Scanner(System.in);
		System.out.print("문자열을 입력하세요 >> ");
		String str = scan.nextLine();
		
		StringTokenizer st = new StringTokenizer(str); //공백을 기본으로 토큰을 분리한다.
		while(st.hasMoreTokens()){
			System.out.println(st.nextToken());
		}

 

▷ 출력 결과

문자열을 입력하세요 >> java programming no jam zz
java
programming
no
jam
zz

 

 


▷ 위 예제에서 분리된 문자열의 토큰 개수를 출력하시오.

		System.out.println("어절 개수는 "+st.countTokens());

 

▷ 출력 결과

문자열을 입력하세요 >> java programming no jam zz
어절 개수는 5

 

 

 

4. Calendar 클래스

▶ Calendar 클래스의 특징

  • Calendar 객체 생성
    • Calendar now = Calendar.getInstance();
    • now객체는 현재 날짜와 시간 정보를 가지고 생성된다.
    • Calendar는 추상 클래스이므로 new Calendar() 하지 않는다.
  • java.util 패키지
    • 시간과 날짜 정보 저장 관리
    • 년, 월, 일, 요일, 시간, 분, 초, 밀리초, 오전 오후 등
    • Calendar 클래스의 각 시간 요소를 설정하기나 알아내기 위한 필드
필드 의미
YEAR 년도
MONTH 달(0~11) - 0부터 시작한다.
HOUR 시간(0~11)
HOUR_OF_DAY 24시간을 기준으로 한 시간
SECOND
DAY_OF_MONTH 한 달의 날짜
DAY_OF_WEEK 한 주의 요일
AM_PM 오전인지 오후인지 구분
MINUTE
MILLISECOND 밀리초

 

 


▶ Calendar 클래스의 주요 메소드

메소드 설명
set() 날짜와 시간 지정.
시,분,초를 한 번에 셋팅할 수 없어 하나씩 셋팅해준다.
clear() Calendar 객체의 모든 필드를 초기화
clear(int field) Calendar 객체의 특정 필드를 초기화
add() 특정 필드의 값을 증가 또는 감소한다. 변경된 값은 다른 필드에 영향을 준다.
ex) 8월 31일에 날짜 +1 => 9월 1일로 변경됨
roll() 특정 필드의 값을 증가하거나 감소한다.
변경된 값은 다른 필드에 영향을 주지 않는다.

 

 

 


▶ 실습 문제

 

[JAVA] Calendar 문제 (18일차)

문제1. Calendar 클래스를 이용해 현재 날짜를 출력 ▶ 코드 //Calendar 객체 생성 Calendar now = Calendar.getInstance(); int year = now.get(Calendar.YEAR); //now에 저장된 년도 int month = now.get(Calendar.MONTH) + 1; //now에 저

deliciouscode.tistory.com

 

 

[JAVA] 시간 게임

시간 게임 Calendar 클래스를 이용한 시간 게임을 작성하라. 엔터 눌렀을 때 현재 시간을 구하시오. 두 번째 엔터를 눌렀을 때 현재 시간을 구하시오. 두 시간 차이를 구하시오. 10초에 가까운 시간

deliciouscode.tistory.com

 

 

 

 

5. HashMap 반환

  • result 메소드를 호출하면 (method.result();
  • name, list, arr 3개를 리턴

 

▷ MethodTest 코드

public class MethodTest {
	String name;
	ArrayList<Integer> list;
	int arr[];
	
	MethodTest(String name, int java, int oracle, int html){
		this.name=name;
		list = new ArrayList<Integer>();
		list.add(java);
		list.add(oracle);
		list.add(html);
		
		arr= new int[3];
		arr[0]=java;
		arr[1]=oracle;
		arr[2]=html;
	}
	
	HashMap<String, Object> Result(){
		HashMap<String, Object> map = new HashMap<String, Object>();
		map.put("name",name);
		map.put("list",list);
		map.put("arr",arr);
		return map;
	}	
}

 

 

▷ main 코드

		MethodTest method = new MethodTest("홍길동",100,90,80);

		HashMap<String, Object> map = method.Result();
		
		System.out.println(map.get("name"));
		System.out.println(map.get("list"));
		System.out.println(map.get("arr"));

 

 

▷ 출력 결과

홍길동
[100, 90, 80]
[I@5eb5c224

※ 배열은 주소값이 출력된다.

 

 

 

 

 


2023년 6월 9일 금요일

<18일차 수업 후기>

18일간의 자바 수업을 마치고 지금까지 배운 내용에 대한 테스트를 보았다. 혼자만의 힘으로 처음부터 끝까지 코드를 작성하는 테스트를 보고 나니 HashMap과 ArrayList에 대해 더 공부해야겠다고 느꼈다. 주말을 이용해서 지금까지 배웠던 내용과 예제들을 쭉 훑어보고, 테스트 문제를 복기해서 다시 코드를 작성해봐야겠다.

728x90
반응형