각진 세상에 둥근 춤을 추자

[Java] String 클래스 본문

Java

[Java] String 클래스

circle.j 2022. 9. 23. 22:52

 

String 클래스는 문자열을 구성하는 문자들을 내부에 저장한다.

String 안에 저장된 문제에는 0부터 시작하는 번호가 매겨져 있는데 이를 인덱스(index)라고 한다.

 

 

 

자바 API 문서의 String 클래스에는 여러 메소드들이 있다.

 

 

 

자바에서 문자열을 선언하는 방법은 두 가지가 있다.

 

(1) 생성자의 매개변수로 문자열을 생성 (원칙)

String str1 = new String("abc");

 

(2) 문자열 상수를 가리키는 방식 (많이 사용하는 방법)

String str2 = "def";

 


 

(1) length() 메소드: 문자열이 길이를 반환

// 객체 생성
String s = "Hello World!";

// 12가 반환됨
int size = s.length();

 

 

(2) charAt() 메소드: 객체 안에 들어 있는 문자 추출

// 객체 생성
String s = "Hello World!";

// 'H'가 반환
char c = s.charAt(0);

 

 

(3) 문자열 덧붙이기1 : 연산자 사용

String result = "A chain" + "is only as strong" + "as its weakest link";

 

 

(4) 문자열 덧붙이기2: concat 메소드 

package ch11_2;

public class StringTest2 {
	public static void main(String[] args) {
		
		String str1 = new String("ABC");
		String str2 = new String("DEF");
		
		System.out.println("문자열1: " + str1);
		System.out.println("문자열2: " + str2);
		
		str1 = str1.concat(str2);
		
		System.out.println("문자열1 + 문자열2: " + str1);
		
	}
}

 

 

 

(4) equals() 메소드: 문자열 비교하기

package ch11_2;

public class StringEquals {
	public static void main(String[] args) {
		
		String s1 = "Java";
		String s2 = "Java";
		String s3 = new String ("Java");
		String s4 = new String ("Java");

		System.out.println(s1.equals(s2));
		System.out.println(s3.equals(s4));
		
	}
}

 

 

 

(5) indexOf() 메소드: 문자열 안에서 단어 찾기

package ch11_2;

public class StringIndexOf {
	public static void main(String[] args) {
		
		String s = "The cat is on the table";
		int index = s.indexOf("table");

		if(index == -1)
			System.out.println("table은 없습니다.");
		else
			System.out.println("table의 위치: " + index);
		
	}
}

 

 

 

(6) split() 메소드: 문자열을 단어로 분리하기

package ch11_2;

import java.util.Scanner;

public class StringSplit {
	public static void main(String[] args) {
		

	Scanner sc = new Scanner(System.in);
				
	System.out.print("문자열을 입력하시오: ");
	String str = sc.nextLine();

	String [] array = str.split(" ");

	for (String token : array) {
		System.out.println(token);
	}
	
	System.out.println(array.length);
	
	}
}

 

 

 

(7) StringBuffer와 StringBuilder 클래스 활용하기

 

프로그램을 만들다 보면 문자열을 변경하거나 연결해야 할 경우가 생긴다.

기존의 String 클래스를 사용해 문자열을 한 번 생성하면 그 내부의 문자열은 변경되지 않기 때문에 빈번하게 문자열을 변경할 때는 비효율적일 수 있다.

자바는 변경 가능한 문자열을 위하여 String 클래스의 대안으로 StringBuffer 클래스와 StringBuilder 클래스를 제공한다.

StringBuffer s = new StringBuffer("Happiness depends upon ourselves");

 

예제를 통해 StringBuffer 클래스와 StringBuilder 클래스를 이해해 본다.

 

package ch11_2;

public class StringBuilderTest {
	public static void main(String[] args) {
		
		String str1 = new String("Java");
		System.out.println("str1의 문자열 주소: " + System.identityHashCode(str1));
		
		// String으로부터 StringBuilder 생성
		StringBuilder buffer = new StringBuilder(str1);
		System.out.println("연산 전 buffer 메모리 주소: " + System.identityHashCode(buffer));
		
		// 문자열 추가
		buffer.append(" and");
		buffer.append(" android");
		buffer.append(" programming is fun!");
		System.out.println("연산 후 buffer 메모리 주소: " + System.identityHashCode(buffer));
		
		// String 클래스로 변환
		str1 = buffer.toString();
		System.out.println(str1);
		System.out.println("연결된 str1의 문자열 주소: " + System.identityHashCode(str1));
	}
}

 

 

 

'Java' 카테고리의 다른 글

[Java] 문자 ↔︎ 아스키코드  (0) 2022.09.24
[Java] 문자열 ↔︎ char 배열  (0) 2022.09.24
[Java] Object 클래스  (0) 2022.09.23
[Java] 인터페이스와 다형성  (0) 2022.09.23
[Java] 인터페이스  (0) 2022.09.21