2008. 8. 19. 16:31

Part 5. 자바에서 자주 사용되는 클래스 III - 문자열 관련 클래스

다른 클래스들은 new 연산자를 통해서만 객체를 생성할 수 있지만, String 클래스는 문자열 상수를 지정하면 바로 String 객체가 생성 된다.

문자열 관련 클래스 : String, StringBuffer 등이 있다.
String 클래스와 StringBuffer 클래스의 차이점
String 클래스는 메서드에 의해 처리된 결과를 저장할 문자열을 새롭게 생성하지만
StringBuffer 클래스는 메모리 상의 자신의 값이 수정 된다는 점이 다르다.

String 관련 메소드

int length()

String 클래스의 문자열 길이를 반환한다.

boolean equals(Object anObject)

두 String 클래스 객체의 내용이 같은지를 비교한다.

boolean equalsIgnoreCase

(String anotherString)

대소문자 구분 없이 문자열이 같은지를 비교한다.

String substring(int beginIndex)

beginIndex로 주어진 값부터 문자열의 마지막까지의 문자열을 반환해주는 메서드

String concat(String str)

이 메서드를 호출한 String 클래스객체의 내용과 인자로 주어진 문자열을 합친 새로운 String 클래스객체를 반환한다.

String replace

(char oldChar, char newChar)

기존의 oldChar로 표시된 모든 문자들을 newChar로 표시된 문자로 모두 바꾸어준다

String toLowerCase()

String 클래스 객체의 모든 문자를 소문자로 바꾼다

String toUpperCase()

String 클래스 객체의 모든 문자를 대문자로 바꾼다.

char charAt(int index)

index로 지정된 곳의 문자값을 반환한다.

int indexOf(int ch)

주어진 문자가 존재하는 위치를 알려준다. 존재하지 않으면 -1을 되돌린다.

int lastIndexOf(int ch)

주어진 문자가 존재하는 마지막 위치를 알려준다. 존재하지 않으면 -1을 되돌린다.

String trim( )

문자열의 시작과 끝 사이에 있는 공백을 없앤다.

static String valueOf(Object obj)

주어진 객체나 기본 데이터형을 문자열로 바꾼다.

===================================================================================
package training;
public class Ex02 {
 public static void main(String[] args) {
  // String  객체 생성하는 2가지 방법
  // 1. new 연산자로 다른 클래스와 동일하게 생성
  String str01=new String("안녕");
  String str02=new String("안녕");
  System.out.println(str01==str02);
  // 2. 문자열 상수를 바로 레퍼런스 변수에 대입
  // 최초로 사용된 문자열 상수는 메모리 할당을 한다.
  String str03="안녕";
  // 이미 사용된 문자열상수일 경우는 메모리할당을 하지않고
  // 최초로 사용되어서 메모리할당한 상수를 가리킴
  String str04="안녕";
  System.out.println(str03==str04);
 }
}
===================================================================================
package training;
public class Ex03 {
 public static void main(String[] args) {
  // String 클래스의 특징을 살펴보기 위한 예제
  String str1="Java Programming";
  // str1이 저장하고 있는 데이터를 대문자로 변환
  str1.toUpperCase();
  System.out.println(str1);
  // 불변객체 : 생성당시의 값이 절대 변하지 않고 유지된다.
  // 메소드를 호출하면 또 다른 메모리를 할당하여
  // 변환된 값을 저장하게 된다.
  System.out.println(str1.toUpperCase());
  String str2=str1.toUpperCase();
  System.out.println(str1);
  System.out.println(str2);
  // 대문자로 변환한 메소드 호출후에 str1에 대문자가
  // 저장되도록 해 보세요.
  str1=str1.toUpperCase();
  System.out.println(str1);
 }
}
===================================================================================
package training;
public class Ex04 {
 public static void main(String[] args) {
  String str01="Java";
  String str02="JAVA";
  System.out.println(str01.length());
  System.out.println(str01.equals(str02)); // 대,소문자 구별
  System.out.println(str01.equalsIgnoreCase(str02)); // 대,소문자 무시
  String str03="Programming";
  String str04=str01.concat(str03); // 문자 결합
  System.out.println(str04);
  // 012345678901234
  // JavaProgramming
  System.out.println(str04.substring(4,8));
  System.out.println(str04.substring(4));
  System.out.println(str04.replace('a','e'));
  // char 형 배열
  char []str={'J','a','v','a'};
  System.out.println(str);
  // 한문자씩 출력하기 - 배열일 경우에는 []연산자에 인덱스
  System.out.println(str[0]);
  System.out.println(str[1]);
  System.out.println(str[2]);
  System.out.println(str[3]);
  // String 객체에 저장된 데이터를 문자 한개씩 출력
  System.out.print(str01.charAt(0)+" ");
  System.out.print(str01.charAt(1)+" ");
  System.out.print(str01.charAt(2)+" ");
  System.out.print(str01.charAt(3)+"\n");
  // 문자열 중에서 문자 한개를 검색
  System.out.println(str04.indexOf('a'));
  System.out.println(str04.lastIndexOf('a'));
  String str05="    pinksung    "; // 사용자가 입력한 아이디
  String str06="pinksung"; // 디비에 저장된 아이디
  System.out.println(str05.equals(str06));
  str05=str05.trim(); // 앞뒤에 입력된 공백문자 제거
  System.out.println(str05.equals(str06));
 }
}
===================================================================================
package training;
public class Ex05 {
 public static void main(String[] args) {
  StringBuffer sb01=new StringBuffer("Java");
  System.out.println("문자열의 길이 : " +sb01.length());
  System.out.println("실제 할당된 메모리 크기 : " +sb01.capacity());
  System.out.println(sb01);
  // 실제 데이터를 저장할 기억공간보다 더 여유롭게 메모리 할당
  sb01.append("Programming");
  System.out.println(sb01);
  String str01="Java";
  str01.replace('a','e'); // String은 불변객체로 메소드 호출후에도 초기값이 유지된다.
  System.out.println(str01);
  System.out.println(sb01);
  sb01.replace(0,4,"MFC"); // StringBuffer는 자신의 값이 변경된다.
  System.out.println(sb01);
  sb01.delete(0,3);
  System.out.println(sb01);
  sb01.deleteCharAt(3);
  System.out.println(sb01);
 }
}
===================================================================================