JAVA String

강효림·2023년 5월 1일
0

JAVA

목록 보기
14/19

String = java.lang.String

String도 일종의 클래스이다.
String 클래스는 하나의 문자열을 표현하는 클래스이다.

String 생성자

생성자설명
String()빈 스트링 객체로 생성한다.
String(char[] value)char배열에 있는 문자들을 스트링 객체로 생성한다.
String(String original)매개변수로 주어진 문자열과 동일한 스트링 객체를 생성한다.
String(StringBuffer buffer)매개변수로 주어진 스트링 버퍼의 문자열을 스트링 객체로 생성한다.

스트링 리터럴과 new String()

👉 생성 방법

  • 리터럴로 생성한다.
    String s = "Hello";
    JVM에서 리터럴 관리를 하고, 응용프로그램 내에서 공유된다.

  • String 객체로 생성한다.
    String t = new String("Hello");
    힙메모리에 String 객체가 생성된다.

스트링 객체의 주요 특징

  • String 객체는 한 번 설정하면 수정이 불가능하다.
String s = new String("Hello");
		String t = s.concat("World");
		
		System.out.println(s);
		System.out.println(t);

Hello
HelloWorld <= 변경되지 않고 추가되었다.

  • String 비교시에는 반드시 equals()를 사용해야한다.

문자열 비교

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()은 새로운 문자열을 생성한다.
+로 단순 연결하는 것이 아닌 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

0개의 댓글