자바의 문자열
자바에서 문자열은 String 클래스의 객체이다. 이 클래스는 자바와 함께 제공되는 표준 클래스이다.
UniCode를 사용하므로 각각의 문자는 2Byte를 차지한다.
String 객체 생성하기
String myString = “KOREA”;
myString = “SEOUL”;
String str = "abc"; char[] data = {'a', 'b', 'c'}; String str = new String(data);
문자열 배열
String[] fruits = new String[5];
문자열 연결하기
String a = “I love “;
a += “Korea”; //I Love 문자열이 수정된것이 아니라
//a 가 새로운 객체를 참조하는 것이다. 새로 객체생성
//기존의 객체가 변형되는것은 아니다.
문자열 비교
String a=“1234”;
String b=“12” + “34”;
if (a == b) …………
- 문자열이 같은지 비교를 위해서는 String Class의 equals() 메소드를 사용한
다.(대소문자구분, 길이, 개수, 문자열이 같을경우 true)
- 대소문자를 무시하고 비교 위해서는 equalsIgnoreCase()를 사용한다.
public class StringTest {
public static void main(String[] args) throws java.io.IOException {
String a;
String b=null;
if (b == null) {
System.out.println("b는 아무것도 참조하지 않습니다...");
}
//아래의 경우 Compile시 NullPointEXception이 발생한다.
//System.out.println("b=null일때 b의 길이 -->"+b.length());
//아래의 두경우 모두 a가 초기화 되지 않았다는 오류발생
//if (a == "1234"){
//System.out.println("a는 '1234'와 같습니다...");
//}
//if (a == null) {
// System.out.println("a는 아무것도 참조하지 않습니다...");
//}
/////////////////////////////////////////////////////////
if (c == null) { System.out.println("c는 아무것도 참조하지 않습니다..."); }
if (c == "") { System.out.println("c는 "" 입니다...");}
if (c == " ") { System.out.println("c는 " " 입니다...");}
if (c.equals(null)){ System.out.println("c는 아무것도 참조하지 않습니다...");}
if (c.equals("")){ System.out.println("c는 "" 입니다...");}
if (c.equals(" ")) { System.out.println("c는 " " 입니다...");
}
//아래의 경우 c가 ""이므로 NullPointException이 발생한다.
//if (c.compareTo("")==0){
// System.out.println("c는 "" 입니다...");
//}
System.out.println("""의 길이 -->"+c.length());
/////////////////////////////////////////////////////////
String d=" ";
System.out.println(d.hashCode());
if (d == null) { System.out.println("d는 아무것도 참조하지 않습니다..."); }
if (d == "") { System.out.println("d는 "" 입니다...");}
if (d == " ") { System.out.println("d는 " " 입니다...");}
if (d.equals(null)){ System.out.println("d는 아무것도 참조하지 않습니다...");}
if (d.equals("")){ System.out.println("d는 "" 입니다...");}
if (d.equals(" ")) { System.out.println("d는 " " 입니다...");}
// 이 경우에도 NullPointException이 발생한다.(주의)
//if (d.compareTo(" ")==0){
// System.out.println("d는 " " 입니다...");
//}
System.out.println("" "의 길이 -->"+d.length());
d = d.trim();
System.out.println("trim후 " "의 길이 -->"+d.length());
}
}
class StringTest2 {
public static void main(String[] args) {
String a="1234";
String b="12";
String c="34";
b += c;
// ==인 경우 실제 값이 같아도 참조하고 있는것이 틀리면 false
System.out.println("a : " +a+" b : "+b);
if (a == b) {
System.out.println("a와b 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("a와b 두문자열 동일한 문자열을 참조하지 않는다.");
}
c="1234";
System.out.println("b : " +b+" c : "+c);
if (b == c) {
System.out.println("b와c 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("b와c 두문자열 동일한 문자열을 참조하지 않는다.");
}
System.out.println("a : " +a+" c : "+c);
if (a == c) {
System.out.println("a와c 두문자열 동일한 문자열을 참조한다.");
}
else {
System.out.println("a와c 두문자열 동일한 문자열을 참조하지 않는다.");
}
}
}
문자열에서 문자 추출하기
- charAt() : 변위(처음 부터 얼마나 떨어져 있나)를 인자로 사용
- length() : 문자열의 길이를 돌려줌
(배열의 경우엔 데이터 멤버인 length를 사용)
- indexOf() : 문자의 위치를 찾아 변위값을 돌려줌, 못찾을경우엔 –1 Return
String text = “I love korea”;
int I = text.indexOf(‘o’); //’o’가 있는 첫번째 색인 찾아줌
int j = text.lastIndexOf(‘o’);//가장끝의 ‘o’를 찾아줌
int k= text.indexOf(‘o’,3); //startIndex인 3이후 부터 검색
int l = text.indexOf(“Korea”); //Korea가 있는 첫번째 색인
int m = text.indexOf(“Korea”,3); //startIndex인 3이후 부터 검색
indexOf의 처음인자는 캐릭터나 문자열이 올수 있으며 두번째 인
자로 검색시작위치를 줄수있다.
- subString() : 문자열 추출
String s = “I love Korea”;
String lastWord = s.subString(7); // 7번째 색인 이후 전부
String seg = s.subString(7,11);//7~11번째 색인의 문자 Return
문자열 객체 변경하기
- replace() : 문자열을 대체시킴
String text = “I love Korea”;
String newText = text.replace(‘ ‘, ‘/’);
- trim() : 문자열 앞뒤의 공백제거
String text = “ I love Korea “;
String newText = text.trim();
String으로부터 문자배열 만들기
- toCharArray() : char 유형의 배열을 만든다.
String charArray = text.toCharArray();
- getChars(int p1, int p2, char[] p3, int p4) : 문자열을 문자배열로 추출
p1 : 처음색인, p2 : 마지막색인, p3 : 배열이름, p4 : 배열의 시작색인
String text = “I love Korea”;
char[] charArray = new char[3];
text.getChars(0, text.length()-1, charArray, 0);
- getBytes() : String을 현재 시스템의 인코딩을 따라 8비트로 변환하여 문자
를 byte형태로 추출
String text = “I love Korea”;
byte[] byteArray = text.getBytes();
char[] 유형의 배열을 String 객체로 만들기
- copyValueOf() : static Method
char[] c = {‘A’,’B’,’C’};
String text = String.copyValueOf(c);
StringBuffer
- String객체는 객체를 조합하여 수정하는등 변경을 가할수 없는 불변문자열
StringBuffer는 직접 변경을 가할수 있는 가변문자열 임. 문자열 변환작업
(추가, 작제, 대체등…)에 용이함
자바에서 String에 대한 작업을 수행할때 내부적으로는 StringBuffer 사용
문자열을 포함할수도, 안할수도 있는 메모리 공간의 버퍼로 구성
- 생성방법
StringBuffer sb = new StringBuffer(“I love Korea”); //아래와 같은 효과
StringBuffer sb = null; //객체참조변수 sb는 아무것도 참조하지 않는다.
sb = new StringBuffer(I love Korea);
- StringBuffer의 용량
StringBuffer sb = new StringBuffer(“I love Korea”);
int myLength = sb.length(); //12
int myCapacity = sb.capacity(); //24
StringBuffer sb = new StringBuffer(50); //용량을 지정
용량을 작게 잡았는데, 큰 문자열이 들어온다면 자동으로 확장하게 되어
(별도의 메모리가 할당) 시간이 걸리게 된다.
- StringBuffer 길이 변경하기
StringBuffer sb = new StringBuffer(“I love Korea”);
sb.setLength(6); //I love, 잘린 부분은 없어짐
sb.setLength(12); //길이를 증가
//I love \u0000(6개)와 같이 \u0000으로 채워진다.
- 객체추가
StringBuffer sb = new StringBuffer(“I love Korea”);
&