날씨가 한동안 무척 덥더니
오늘은 너무 싸늘하다
뉴스나 기사로 5월중에 이번이
가장 더웠다고 하던데
이런류의 내용은 작년에도
보았던것 같다
어째 한해씩 갈수록
최고치를 돌파하고 있는것 같다
이유야 내가 어찌 알겠냐만은
분명히 인위적인 행동에 의한
결과가 아닐까 싶다
지구 걱정은 그만하고 내걱정부터
해야 하는데 복습을 시작해보자
오늘의 주된 이야기는 StringBuffer이다
앞부분에서는 저번에 하다 말았던
JFrame에 대한 나머지 예제들을
소개할것이고 주이야기는
뒷부분에 적도록 하겠다
import java.awt.Toolkit;
import java.awt.Image;
import javax.swing.JFrame;
class JFrameEx5 {
public static void main(String[] args) {
JFrame f = new JFrame("이거슨 JFrame");
//f.setTitle("이거슨 JFrame");
Toolkit kit = Toolkit.getDefaultToolkit();
Image image = kit.getImage("coffee.png");
f.setIconImage(image);
f.setLocation(200, 200);
f.setSize(400, 300);
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
f.setVisible(true);
}
}
맨 먼저 보여줄것은 이미지를
넣는 기능이다
Toolkit으로 진행할수 있는데
사용하는 방법은 간단하다
예제처럼 kit를 만들어주어서
coffee.png를 얻어오면 된다
코드를 실행해보고 싶은 사람은
직접 이미지를 만들어서 해보자
import java.awt.Dimension;
import java.awt.Toolkit;
class JFrameEx6 {
public static void main(String[] args) {
// 사용자 해상도 구하기
Toolkit kit = Toolkit.getDefaultToolkit();
Dimension screenSize = kit.getScreenSize();
System.out.println(screenSize);
}
}
해상도를 구하는 예제이다
이밖에도 몇가지 방법이 더 있다고
설명 들은것 같은데 잘 기억이 안난다
그치만 이것만 알아도
별다르게 문제 없이 할수 있으니
크게 다른건 알필요 없다고 생각한다
이것도 마찬가지로 Toolkit을 이용한다
class StringBufferEx1 {
public static void main(String[] args) {
// 문자열(변경이 가능함)
StringBuffer buf = new StringBuffer("abc");
System.out.println(buf);
// 추가
buf.append("def");
buf.append(1);
System.out.println(buf);
System.out.println(buf.charAt(2));
}
}
오늘의 본론인 StringBuffer로 들어가보자
별거 없다
String과 같은 역할인데
속도가 무진장 빠르다는것
문자열을 추가할수 있는 등
다양한 기능을 가지고 있다
class StringBufferEx2 {
public static void main(String[] args) {
// 0123456
String str = "abcdefg";
// StringBuffer(동기화O)
// StringBuilder(동기화X)
StringBuffer buf = new StringBuffer(str);
buf.reverse();
System.out.println(buf);
buf.insert(3, "XX");
System.out.println(buf);
System.out.println(buf.delete(2, 4));
System.out.println(buf);
}
}
이놈과 함께 StringBuffer에 대한
설명도 잠깐 들었던 기억이 난다
둘의 차이점이라면 동기화 가능이냐
불가능이냐 이것인데 ,
이 동기화에 대한 설명은
후반에 나오니 그때가서
생각하도록 하고 지금은
그냥 이런게 있구나 정도만 알자
class StringVsStringBuffer {
public static void useString() {
String str = "";
// 현재시간을 구한다.
long time = System.currentTimeMillis();
for(int i=0; i<1000000; i++) {
str += "a";
}
// 소요시간을 구한다.
time = System.currentTimeMillis() - time;
System.out.println(time + "ms");
}
public static void useStringBuffer() {
StringBuffer buf = new StringBuffer();
// 현재시간을 구한다.
long time = System.currentTimeMillis();
for(int i=0; i<1000000; i++) {
buf.append("a");
}
// 소요시간을 구한다.
time = System.currentTimeMillis() - time;
System.out.println(time + "ms");
}
public static void main(String[] args) {
useString();
// useStringBuffer();
}
}
처음에 말했듯이 String보다
훨씬 빠르다
이번 코드는 얼마나 더 빠른지에
대해서 보여주고 있으니 참고하자
직접 실행해보면 눈에 띌만큼의
차이를 보여준다
제일 처음 실행해보고 와
이정도구나 라고 느꼈었는데
벌써 5달전 이야기이다
시간이 참 빠르게 가는것 같다
import java.util.*;
class UseStringTokenizer {
public static void main(String[] args) {
String str = "동해물과!백두산이@마르고!,닳도록";
StringTokenizer st = new StringTokenizer(str, "!@,");
while(st.hasMoreTokens()) {
String token = st.nextToken();
System.out.println(token);
}
}
}
마지막 보너스로 StringTokenizer에
대해 복습해보고 오늘은 시마이하자
이것도 설명은 간단하다
토큰을 기준으로 구분할수 있다는것
또다른 기능이 있는지는 잘 모르겠으나
내가 들은건 여기까지이다
나머지 예제들 모두 복붙이 가능하니
직접 돌려보고 싶은 사람들은
복붙해서 해보면 된다
물론, 직접 치는게 당신에게 훨씬
도움이 될것이다
'IT > 자바' 카테고리의 다른 글
이클립스 단축키 BorderLayout 외 몇가지 (0) | 2017.06.05 |
---|---|
JFrame 세번째 (0) | 2017.06.04 |
JFrame 예제 4개 (0) | 2017.05.31 |
자바 과제 복습 (0) | 2017.05.30 |
String 문자열에 관한 고찰 (0) | 2017.05.29 |
댓글