오늘도 열심히 시작해보자
무엇을?
자바 복습을 !
문자열에 관한 고찰
제목은 엄청 멋지지만
별거 없는 그런 내용이니
처음부터 기대하진 말자
우리 일상에서 어쩌면 가장
많이 사용하는게 문자열 일것이다
지금 당신이 읽는 글도
이것들의 집합이라 할수 있다
그만큼 많이 사용하기 때문에
정확하게 어떤 놈인지
알아두어야 나중에 힘들지 않다
학교 다닐때 입출력을 배울 시기에
이 String 때문에 꽤나 고생했었는데
시간이 지나도 별로 얻은 소득은
없는것 같아 아쉽다
어째 매번 초장은 한탄의 시간이
되는것 같은데 미안하고 시작해보자
class StringEx2 {
public static void main(String[] args) {
// 01234567890123
String str = "abcdefghijkab";
System.out.println(str.substring(2, 6));
System.out.println(str.substring(2));
// str에서 "ab"를 찾아서 "XX"로 교체한 새로운 문자열을 리턴한다.
System.out.println(str.replace("ab", "XX"));
System.out.println(str);
String myStr = new String("abc");
// String Pool에 등록(최초).
String otherStr = myStr.intern();
System.out.println(myStr == otherStr);
// String Pool에서 얻어온다(기존에 등록되어 있음)
String anotherStr = otherStr.intern();
System.out.println(anotherStr == otherStr);
// 생각해볼것!
System.out.println("apple".compareTo("appl"));
System.out.println('e' - 'y');
for(int idx=0; idx<str.length(); idx++) {
System.out.println(str.charAt(idx));
}
// 글자 수 구하기
System.out.println(str.length());
// 해당 문자열의 위치 구하기
int idx = str.indexOf("ab", 1);
idx = str.lastIndexOf("ab", 10);
String path1 = "c:\\temp\\a.txt";
String path2 = "c:\\temp\\b.txt";
System.out.println(str.startsWith("ab"));
System.out.println(path1.endsWith(".txt"));
// 내용에 포함되어 있는지 검사
System.out.println(str.contains("gh"));
// 문자열 결합, +
System.out.println(str.concat("ZZ"));
System.out.println(str);
// 해당인덱스의 글자를 리턴(char)한다.
char c = str.charAt(3);
System.out.println(c);
}
}
이렇게나 많은 기능들이 있다
다 외우기도 벅찰것이지만
쓰다보면 외워진다
그만큼 쓸일이 제법 자주 있다
현업을 뛰어보지도 못한 나도
꽤나 많이 썼던 기능들이다
문자열도 배열처럼 인덱스로 부릴수
있다는 기반만 인식하면
그리 어렵지 않을테니
하나하나 쳐보고 실행해보길 바란다
딱히 설명할 부분도 없다
class Fan {
String maker;
int price;
public Fan(String maker, int price) {
this.maker = maker;
this.price = price;
}
@Override
public String toString() {
return maker + ", " + price;
}
}
class StringEx3 {
public static void main(String[] args) {
Fan f = new Fan("goldstar", 50000);
String fanInfo = f.toString();
/*
012345678901234
fanInfo -> "goldstar, 50000"
*/
int seperatorIdx = fanInfo.indexOf(","); // 8
String maker = fanInfo.substring(0, seperatorIdx);
System.out.println(maker);
// " 50000"
String temp = fanInfo.substring(seperatorIdx + 1);
// 앞뒤 여백을 제거한 새로운 문자열을 리턴
int price = Integer.parseInt(temp.trim());
System.out.println(price);
}
}
trim메소드가 나오는데
이게 정말 나는 너무 좋다
정말 효자라고 개인적으로 생각한다
입력창을 받을때 만능의 역할을 해준다
까다로운 문자열 받기도
이놈 하나면 뚝딱 해버릴수 있다
정말 효자다
class StringEx4 {
public static void main(String[] args) {
String str = "abc";
String str2 = "ABC";
// 대문자로
System.out.println(str.toUpperCase());
// 소문자로
System.out.println(str.toLowerCase());
// 대소문자 구분없이 내용비교
System.out.println(str.equalsIgnoreCase(str2));
// String -> char[]
char[] arr = str.toCharArray();
// char[] -> String
String other = String.valueOf(arr);
String another = new String(arr);
}
}
대문자와 소문자 간의
비교및 변환에 대한 예제이다
딱히 설명할건 없다
그냥 저렇게 된다고
우리가 여태까지 겪었던
주입식 교육대로 알아먹자
처음 내 블로그에 온 사람들이라면
완전 가라로 포스팅 한다고
욕할수도 있지만 어쩌겠는가
설명할게 없는데 말이다
class StringEx5 {
public static void main(String[] args) {
// 012345678901234
String fileName = "c:\\temp\\a.txt";
// "c:\\temp\\a_복사본.txt"
int idx = fileName.lastIndexOf("."); // 11
// "c:\\temp\\a"
String header = fileName.substring(0, idx);
// ".txt"
String ext = fileName.substring(idx);
fileName = header + "_복사본" + ext;
System.out.println(fileName);
}
}
fileName이 어떻게 나오는지만
알면 저기 예제 이해는 다 된거다
indexOf 또한 상당히 유용하게 사용된다
학원 다닐때 과제로 했던 기억이 난다
바로 다음 포스팅때 그때 풀었던
과제를 소개해보아야 겠다
그러면 칸도 채우고 날짜도 하루 더 채우는
1석 2조의 효과가 나타날테니 말이다
String 문자열에 관한 고찰이었지만
실상 쳐보는 시간이 더 길것이다
열심히 하길 바란다
'IT > 자바' 카테고리의 다른 글
JFrame 예제 4개 (0) | 2017.05.31 |
---|---|
자바 과제 복습 (0) | 2017.05.30 |
Exception 나머지 예제와 throws (0) | 2017.05.28 |
자바 Exception 예외 처리 (0) | 2017.05.25 |
Map과 HashCode (0) | 2017.05.24 |
댓글