1.String
String은 하나의 자료형이라기 보다는 클래스라고 이해하는편이 쉽다.
문자형을 배열처럼 나열하여 문자열을 만든게 String이다.
String은 만들때 다양한 메소드들, 생성자들이 구현되어 있다.
- 다양한 초기화 방법
package chap08.exam01.string;
public class StringMehod {
public static void main(String[] args) {
// 문자열 만드는 방법
String str1 = "abcd";
String str2 = new String("abcde");
char[] alphabet = {'a','b','c','d','e','f'};
String str3 = new String(alphabet);
System.out.println(str1);
System.out.println(str2);
System.out.println(str3);
}
}
- 문자열 길이 (length())
- 특정 인덱스 가져오기 (charAt(n))
- 특정 부분부터 원하는 부분까지 잘라내기 (substring(n1, n2) , 자주 쓰이므로 꼭 알아두자
- 문자 배열을 문자열으로 / 문자열을 문자 배열로 넣기
- 특정 구분자를 기준으로 나누기 (split(""))
- 특정 문자열 찾기 (indexOf("")), (lastIndexOf(""))
package chap08.exam01.string;
public class CharArr {
public static void main(String[] args) {
// 문자열이 배열을 기반으로 해서 가능한 기능
String str = "asdfghj";
String strResult;
int intResult;
char charResult;
// 문자열의 길이
System.out.println(str.length());
// 특정 인덱스 가져오기
System.out.println(str.charAt(3));
// 잘라내기 (자주 씀)
strResult = str.substring(1, 5); // asdfghj
// 1번 부터 보여주고 5번부터 잘라내라
System.out.println(strResult); // sdfg
// 문자열 -> 배열
char[] chararr = str.toCharArray();
System.out.println(chararr);
// 배열 -> 문자열
strResult = new String(chararr);
System.out.println(strResult);
// 특정 구분자를 기준으로 나누기
str = "a|b|c|d|e|f|g";
// 역슬래쉬나 버티컬바와 같은 특수 문자는 문자로 인식이 안됨
String[] strArr = str.split("\\|"); // 이스케이프 문자인 역슬래쉬를 사용
for(String s : strArr) {
System.out.println(s);
}
// 특정 문자열 찾기
str = "asfgdhgvabfkjaffasjkfn"; // 0, 8, 13, 16
int idx = str.indexOf("a");
// 무조건 첫번째 문자만 반환 한다.
System.out.println(idx);
idx = str.lastIndexOf("a");
// 무조건 뒤에서 부터 첫번째 문자의 인덱스를 반환 한다.
System.out.println(str.length() + "중 " + idx + "번째");
// 3개의 a를 모두 찾을 수 있는 방법
// indexOf("찾을 문자", 시작할 인덱스)
int a = 0;
while(true) {
System.out.println(str.indexOf("a", a));
a = str.indexOf("a", a) + 1;
if(str.lastIndexOf("a") < a) {
break;
}
}
}
}
- 같은지 다른지 비교 (equals(""))
- 공백 제거, Excel 자료 불러올 때 쓰임 (trim())
- 특정 문자 포함 여부 (contains(""))
- 특정 문자열로 시작 or 끝나는가?, 파일 형식 알아낼 때 자주 쓰임 (startsWith(""), endWith(""))
- 문자열 교체 (replace(""))
package chap08.exam01.string;
public class StringUtil {
public static void main(String[] args) {
String str = "asdfg";
String strResult;
int intResult;
boolean boolResult;
// 문자열 비교
boolResult = str.equals("abc"); // true | false
System.out.println("두 문자가 같습니까? " + boolResult);
intResult = str.compareTo("asd"); // 일치하지 않는 갯수
System.out.println("두 문자가 같습니까? " + intResult);
// 앞 뒤 공백제거 (excel 자료 불러올 때 종종 쓰임)
str = " 가나다라마바사 ";
strResult = str.trim();
System.out.println(str);
System.out.println(strResult);
// 특정 문자 포함 여부 확인(잘 안씀)
boolResult = str.contains("다");
System.out.println("'다'를 포함하고 있는가? " + boolResult);
// 특정 문자열로 시작 | 끝나는가?
str = "[img]uploadFile.png";
boolResult = str.startsWith("[img]");
System.out.println("[img]로 시작되나? " + boolResult);
boolResult = str.endsWith("png");
System.out.println("png로 끝나는가? " + boolResult);
// 문자열 교체
strResult = str.replace("img", "이미지");
System.out.println("str : " + strResult);
}
}
- 더해서 넣기
- String Builder
- String Buffer
package chap08.exam02.compare;
public class Compare {
public static void main(String[] args) {
String str = "문자열을 "; // 객체 1개
str += "추가 할 때 마다 "; // 객체 1개
str += "객체가 추가 된다."; // 객체 1개
System.out.println("String : " + str);
// Builder나 Buffer는 하나의 객체를 확장하며 사용
StringBuilder builder = new StringBuilder("문자열을 ");
builder.append("추가 할 때 마다 ");
builder.append("객체의 크기가 늘어 난다.");
System.out.println("builder : " + builder);
// StringBuffer는 동시 접속을 허용하지 않는다
StringBuffer buffer = new StringBuffer("문자열을 ");
buffer.append("추가 할 때 마다 ");
buffer.append("객체의 크기가 늘어 난다.");
System.out.println("buffer : " + buffer);
}
}