StringBuffer 와 StringBuilder
•
String 객체는 한 번 값이 할당되면 그 공간은 변하지 않는다.
하지만 Stringbuilder나 StringBuffer 객체는 한 번 값이 할당되더라도 한 번 더 다른 값이 할당되면 할당된 공간이 변하는 특성을 갖고 있다.
◦
String: 불변성을 갖는다. → Immutable 하다.
◦
StringBuilder, StringBuffer: 가변성을 갖는다. → mutable 하다.
•
그래서 String 클래스의 경우, 빈번하게 문자열을 변경할 때에는 비효율적일 수 있다.
왜냐하면 문자열의 내용을 변경하는 String 클래스 메서드의 경우, 새로운 String 객체를 생성하고 기존의 내용을 복사해야 하기 때문이다. ⇒ 원본 보존의 법칙
•
StringBuilder는 문자열을 자유롭게 조작할 수 있는 객체이다.
1.
append(): 문자열을 추가할 때 사용
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123");
sb.append(4567); //문자열 덧붙이기
System.out.println(sb); //1234567 출력
}
}
Java
복사
2.
delete(): 특정 번지부터 특정 번지 전까지 삭제하겠다는 의미
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123");
sb.delete(0, 2);
//delete(start, end) 삭제, 위의 예제에서는 12가 삭제된다.
System.out.println(sb); //3 출력
}
}
Java
복사
3.
replace(): 특정 번지부터 특정 번지 전까지 교체하겠다는 의미
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123");
sb.replace(0, 2, "A");
System.out.println(sb); //A3 출력
}
}
Java
복사
4.
reverse(): 문자열 데이터를 역순으로 정렬하겠다는 의미
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123");
sb.reverse();
System.out.println(sb); //321 출력
}
}
Java
복사
5.
substring(): 문자열의 특정 부분을 잘라내는 데 사용
substring(int startIndex) or substring(int startIndex, int endIndex)
public class StringBuilderTest {
public static void main(String[] args) {
StringBuilder sb = new StringBuilder("123");
String sub = sb.substring(2, 3);
System.out.println(sub); //3 출력
}
}
Java
복사
•
예제) 문자열을 입력받아 한 글자씩 회전시켜 모두 출력하는 프로그램을 작성하라. ([Hint] Scanner.nextLine()을 이용하면 빈칸을 포함하여 한 번에 한 줄을 읽을 수 있다.)
문자열을 입력하세요. 빈칸이 있어도 되고 영어 한글 모두 됩니다.
I Love you
Love youI
Love youI
ove youI L
ve youI Lo
e youI Lov
youI Love
youI Love
ouI Love y
uI Love yo
I Love you
Plain Text
복사
code
Math 클래스
•
Math 클래스는 지수나 로그, 제곱근, 삼각함수와 같은 기본적인 수치 연산을 위한 메서드들을 제공한다.
public static void main(String[] args) {
double radian45 = Math.toRadians(45); //라디안으로 변환
System.out.println("sin 45 = " + Math.sin(radian45)); //삼각함수
System.out.println("cos 45 = " + Math.cos(radian45));
System.out.println("tan 45 = " + Math.tan(radian45));
System.out.println("2 ^ 16 = " + Math.pow(2, 16)); //제곱근
System.out.println("log 25 = " + Math.log(25)); //로그
int num = (int) (Math.random() * 100 + 1);
System.out.println(num);
}
Java
복사
Calendar 클래스
public static void main(String[] args) {
Calendar c = Calendar.getInstance();
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH) + 1;
int date = c.get(Calendar.DATE);
System.out.println(year + "." + month + "." + date);
int hour12 = c.get(Calendar.HOUR);
int hour24 = c.get(Calendar.HOUR_OF_DAY);
int minute = c.get(Calendar.MINUTE);
int second = c.get(Calendar.SECOND);
System.out.println(hour12 + " : " + minute + " : " + second);
System.out.println(hour24 + " : " + minute + " : " + second);
int milliSecond = c.get(Calendar.MILLISECOND);
int timeZone = c.get(Calendar.ZONE_OFFSET);
int lastDay = c.getActualMaximum(Calendar.DATE);
}
Java
복사
•
예제) Calendar 객체를 생성하면 현재 시간을 알 수 있다. 프로그램을 실행한 현재 시간이 4시에서 낮 12시 이전이면 “Good Morning”을, 오후 6시 이전이면 “Good Afternoon”을, 밤 10시 이전이면 “Good Evening”을, 그 이후는 “Good Night”을 출력하는 프로그램을 작성하라.
현재 시간은 10시 22분입니다.
Good Morning
Plain Text
복사
code