String 클래스 : 문자열을 표현하는 클래스

  • java.lang 패키지에 포함, java.lang.String
  • 스트링 생성자
생성자  설명
String() 빈 string 객체 생성
String(char[] value) char 배열에 있는 값 String 객체로 생성
String(String str) 매개변수로 주어진 문자열과 같은 문자열을 String 객체로 생성
String(StringBuffer buffer) 매개변수로 주어진 버퍼의 문자열을 String 객체로 생성

 

스트링 리터럴과 new String()

// 스트링 리터럴로 스트링 객체 생성
String hi1 = "hello";
// String 클래스의 생성자를 이용하여 스트링 생성
char hi2[] = {'h', 'e', 'l', 'l', 'o'};
String hi3 = new String(hi2);
String hi4 = new String("hello"); // str2와 str3은 모두 "hello" 스트링
  • 리터럴로 생성 : JVM이 리터럴 관리(String Constant Pool), 응용프로그램 내에서 공유됨
  • String 객체로 생성 : 힙 메모리에 String 객체 생성
String a = "Hello";
String b = "Java";
String c = "Hello";
String d = new String("Hello");
String e = new String("Java");
String f = new String("Java");

리터럴 사용시 :
  1. 해당 문자열이 String Constant Pool에 있는 지 탐색
  2. 없으면 해당 문자열 추가
    있으면 해당 문자열 사용
String 객체로 생성 시 :
  • 힙 메모리에 문자열 객체 생성a
return (a==c);//true
return (a.equals(c));//true
return (e==f);//false
return (e.equals(f));//true

String 객체 특징

  • String 객체는 수정이 불가
String s = new String("Hello");
s = s+"Human"//!!오류!! 수정 불가
  • String 비교시 반드시 equals() 사용
메소드 설명
char charAt(int index) index 인덱스에 있는 문자 값 리턴
int codePointAt(int index) index 인덱스에 있는 유니코드값 리턴
int compareTo(String anotherStr) 두 스트링을 사전 순으로 비교, 같으면 0, anotherStr이 먼저 나오면 음수, 자기 자신이 먼저나오면 양수 리턴
String concat(String str) 현재 스트링 뒤에 str스트링을 덧붙인 새로운 스트링 리턴
boolean contains(CharSequence s) s에 지정된 문자들을 포함하고 있으면 true 리턴
int length() 스트링의 길이(문자개수) 리턴
String replace(CharSequence target,
CharSequence replacement)
target이 지정한 문자열을 replacement가 지정한 문자열로 대체한 스트링 리턴
String[] split(String regex) 정규식 regex에 일치하는 부분을 중심으로 스트링 분리, 분리된 스트링들을 배열로 저장하여 리턴
String subString(int beginIndex) beginIndex 인덱스부터 시작하는 서브 스트링 리턴
String toLowerCase() 소문자로 변경한 스트링 리턴
String toUpperCase() 대문자로 변경한 스트링 리턴
String trim() 스트링 앞뒤의 공백 문자들 제거한 스트링 리턴
  • int compareTo(String str)
    • str과 자기자신이 같으면 0
    • str이 먼저면 음수
    • 자기 자신이 먼저면 양수
String iphone= "apple";
String galaxy = "samsung";
int res = iphone.compareTo(galaxy);//res 는 양수
  • String concat(String str)
    • 자기 자신에 str을 추가해서 새로운 객체 리턴
  • '+' 연산자로도 연결 가능
String device = new String("iphone");
String version = new String("13");
device = device.concat(version);
//device 레퍼런스는 concat()이 리턴한 새로운 스트링 객체를 가리킴

String plus = new String("pro")
System.out.print(device+plus);//+ 연산자로도 연결 가능
  • String trim()
    • 문자열 앞뒤 공백 문자 제거한 문자열 리턴
String a = "   iphone X   ";
String b = "   galaxy S22\t";
String c = a.trim(); // c = "iphone X". 문자열 중간에 있는 공백은 제거되지 않음
String d = b.trim(); // d = "galaxy S22". 스페이스와 '\t' 제거됨"
  • Char charAt(int index)
    • 문자열 내에 문자 접근
// "sucess super class"에 포함된 ‘s’의 개수를 세는 코드
int count = 0;
String s = "sucess super class";
for(int i=0; i<a.length(); i++) { // a.length()는 18
	if(a.charAt(i) == 's')// 문자열내에 i번째 문자 접근
	count++;
}
System.out.println(count); // 6 출력

+ Recent posts