String | StringBuilder | |
사용법 | 편리 | 불편 |
String s = "Hi"; | StringBuilder sb = new StringBuilder("Hi"); | |
결합연산자 | + | 없음 |
sop(s+"JAVA"); | sop(sb.append("JAVA")); | |
객체내용 | 불변 | 가변 |
Hi+"JAVA" 시 새로운 String 객체 만들어짐 | sb.append("JAVA") 시 기본 String 객체의 내용이 변경됨 (메모리가 효율적) |
|
equals() | 재정의 됨 | 재정의 안됨 |
String s1 = "Hi"; String s2 = "Hi"; String s3 = new String("Hi"); String s4 = new String("Hi"); s1.equals(s2); // true s1.equals(s3); // true s3.equals(s4); // true 모양 동일하면 같은 메모리번지 참조 s1==s2; // true s1==s3; // false s3==s4; // false |
StringBuilder sb1 = new StringBuilder("Hi"); StringBuilder sb2 = new StringBuilder("Hi"); sb1.equals(sb2); // false String s5 = sb1.toString(); (StringBuilder를 String으로 변환) |
import java.util.StringTokenizer;
public class StringTest {
public static void main(String[] args) {
/*
String s = "HELLO";
char c = s.charAt(0); //'H'
int size = s.length(); // 5, 여기에선 length 메서드, 배열은 그냥 length
*/
String s = "안녕하세요";
char c = s.charAt(0); //'안'
int size = s.length(); // 5, 여기에선 length 메서드
s = "가나다라다나가";
// System.out.println("Palindrome문자열입니다");
// System.out.println("Palindrome문자열이 아닙니다");
/*
if(s.charAt(0) != s.charAt(size-1)) {
System.out.println("Palindrome문자열이 아닙니다");
} else if(s.charAt(1) != s.charAt(size-1-1)){
System.out.println("Palindrome문자열이 아닙니다");
} else if(s.charAt(2) != s.charAt(size-1-2)){
System.out.println("Palindrome문자열이 아닙니다");
} else {
System.out.println("Palindrome문자열입니다");
}
*/
size = s.length();
int i = 0;
for(; i<size/2; i++) {
if(s.charAt(i) != s.charAt(size-1-i)) {
break;
}
}
if(i == size/2) {
System.out.println("Palindrome문자열입니다");
} else {
System.out.println("Palindrome문자열이 아닙니다");
}
s = "100:70:65";
String delim = ":";
String[]arr = s.split(delim); //split의 결과는 string 배열
for(String str:arr) {
System.out.println(Integer.parseInt(str));
}
s = "100::65"; // 국어 수학 영어점수인데 수학은 응시를 안했다.
String[]arr1 = s.split(delim); //split의 결과는 string 배열
for(String str:arr1) { //"100", "", "65"
if(str.equals("")) {
System.out.println("미응시");
} else {
System.out.println(Integer.parseInt(str));
}
}
System.out.println("--------------------------");
StringTokenizer st = new StringTokenizer(s, delim);
// StringTokenizer은 빈 문자열을 분리하지않음
// StringTokenizer은 의미없는 것(토큰이 아닌것)은 분리하지 않음.
while(st.hasMoreTokens()) {
String str = st.nextToken(); // "100","65"
System.out.println(str);
}
}
}
'언어 > Java' 카테고리의 다른 글
포장 클래스(Wrapper class) (0) | 2023.08.08 |
---|---|
정규표현식(regex) (0) | 2023.08.08 |
롬복(Lombok) (0) | 2023.08.08 |
java.base 모듈 (0) | 2023.08.08 |
API 도큐먼트 (0) | 2023.08.08 |