String도 일종의 클래스이다.
String 클래스는 하나의 문자열을 표현하는 클래스이다.
생성자 | 설명 |
---|---|
String() | 빈 스트링 객체로 생성한다. |
String(char[] value) | char배열에 있는 문자들을 스트링 객체로 생성한다. |
String(String original) | 매개변수로 주어진 문자열과 동일한 스트링 객체를 생성한다. |
String(StringBuffer buffer) | 매개변수로 주어진 스트링 버퍼의 문자열을 스트링 객체로 생성한다. |
👉 생성 방법
리터럴로 생성한다.
String s = "Hello";
JVM에서 리터럴 관리를 하고, 응용프로그램 내에서 공유된다.
String 객체로 생성한다.
String t = new String("Hello");
힙메모리에 String 객체가 생성된다.
String s = new String("Hello");
String t = s.concat("World");
System.out.println(s);
System.out.println(t);
Hello
HelloWorld <= 변경되지 않고 추가되었다.
int compareTo(String anotherString)
문자열이 같으면 0을 반환한다.
이 문자열이 anotherString 보다 먼저 나오면 음수 반환, 나중에 나오면 양수 반환
글로는 잘 이해가 안가니까 코드를 보면서 이해하는게 더 좋을 것 같다.
String java = "Java";
String cpp = "C++";
int res = java.compareTo(cpp);
if(res == 0)
System.out.println("the same");
else if(res < 0)
System.out.println(java + " < " + cpp);
else
System.out.println(java + " > " + cpp);
java > C++
아스키코드 값으로 비교하면 "Java"가 "C++"보다 크다.
아스키코드 값이 클수록 나중에 나오기 때문에 양수를 반환한다.
문자열 비교에 ==는 사용하면 안된다.
+
로 문자열을 연결한다. System.out.println(java + " < " + cpp);
String concat(String str)
을 이용한 문자열 연결 String t = "I love ".concat("you");
concat()은 새로운 문자열을 생성한다.
+
로 단순 연결하는 것이 아닌 concat()
은 합쳐진 문자열을 새롭게 하나의 String객체를 만들어 낸다.
String trim()
문자열 앞, 뒤의 공백 문자를 제거해준다. 하지만 문자열 중간에 있는 공백은 제거되지 않는다.
char charAt(int index)
문자열 내의 문자에 접근하는 것이다.
String a = "class";
char c = a.charAt(3);
System.out.println(c);
s
0부터 시작하기 때문에 3번째 있는 글자인 's'가 출력된다.
package test2_7;
public class StringEx {
public static void main(String[] args) {
String a = new String("C#");
String b = new String(", Java");
System.out.println(a + "의 길이는 " + a.length()); //C#의 길이는 2
System.out.println(a.contains("#")); //#을 포함하고 있으면 true 반환 => true
a=a.concat(b);
System.out.println(a); //C#, Java
a=a.trim();
System.out.println(a);//C#, Java
a=a.replace("C#", "C++");
System.out.println(a); //C++, Java
String s[] = a.split(",");
for(int i = 0; i<s.length; i++) {
System.out.println("분리된 문자열 " + i + ": " + s[i]); //0:C# 1:Java
}
a=a.substring(5);
System.out.println(a);//5번째 이후로 쭉 출력 => Java
char c = a.charAt(3);
System.out.println(c); //,
}
}
C#의 길이는 2
true
C#, Java
C#, Java
C++, Java
분리된 문자열 0: C++
분리된 문자열 1: Java
Java
a