[JAVA] StringBuffer, StringTokenizer, Calendar (18일차)
<오늘의 학습>
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) : 구분 문자로 분리된 문자열
- 문자열을 분리할 때 사용되는 기준 문자 : 구분 문자(delimiter)
- 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에 대해 더 공부해야겠다고 느꼈다. 주말을 이용해서 지금까지 배웠던 내용과 예제들을 쭉 훑어보고, 테스트 문제를 복기해서 다시 코드를 작성해봐야겠다.