본문 바로가기
Language/java

java 기초 7: String 클래스

by S2채닝S2 2023. 1. 4.
String a = "안녕하세요"
String b = "홍길동입니다"

//concat 메소드 사용
System.out.println(a+b); //안녕하세요홍길동입니다
System.out.println(b+c); //홍길동입니다안녕하세요

String 클래스

- 자바의 문자열 String은 기본 타입이 아닌 '클래스'이다.

- 따라서, String의 타입은 참조타입이 된다.

- String 문자열을 지정할 때에는 반드시 큰 따옴표("")를 사용한다

  >>(작은 따옴표('')는 char 기본타입에 사용된다)

  >> String str = 'str' // 오류발생

 

 

String 클래스 선언하기

String 클래스 선언 방식에는 다음 두 가지가 있다.

String str1 = new String("문자열 입니다");
String str2 = "문자열 입니다";

 

 

 

동일한 문자열

여러개의 변수에 동일한 문자열을 저장하면 어떻게 될까?

그 것은 문자열의 선언 방식에 따라 다르다

 

1)  new 연산자를 이용하여 String 인스턴스를 생성한 경우

  이 경우에는 new 연산자를 통해 String 인스턴스를 2개 생성하기 때문에, 각기 다른 메모리주소를 가지는 참조타입 변수가 2개 생성된다. 따라서, str1과 str2의 값은 주소값(1001, 1002)로, str1 == str2의 결과는 false가 된다.

String str1 = new String("문자열 입니다")
Strting str2 = new String("문자열 입니다")

System.out.println(str1 == str2); //false

 

2)  문자열을 그대로 저장한 경우

  new 연산자를 통하지 않고 문자열을 그대로 저장한 경우, 해당 문자열은 힙 메모리 영역의 String pool에 저장된다.

이 String pool에는 동일한 문자열을 저장할 수 없으므로, 동일한 문자열은 동일한 메모리 주소를 가진다.

따라서, 각기 다른 변수에 같은 문자열을 지정하면 같은 메모리 주소를 갖게 되며, str1 == str2의 결과는 true가 된다.

String str1 = "문자열 입니다";
String str2 = "문자열 입니다";

System.out.println(str1 == str2); //true

 

 

문자열 비교

앞에서 설명했듯이, String은 클래스이고, 주소값을 가지는 참조타입의 인스턴스이다.

따라서 == 등의 연산자를 이용하면 '주소값'을 비교하게 된다.

동일한 문자열인지 확인하려면 equals메소드를 사용하는 것이 좋다.

String a = new String("Hello");
String b = new String("Hello")
String c = "Hello";

System.out.println(a.equals(b)); //true
System.out.println(a.equals(c)); //true
System.out.println(b.equals(c)); //true

 

문자열 합치기

1) concat 메소드 사용

String a = "안녕하세요"
String b = "홍길동입니다"

//concat 메소드 사용
System.out.println(a.concat(b)); //안녕하세요홍길동입니다
System.out.println(b.concat(a)); //홍길동입니다안녕하세요

2) + 연산자 사용

String a = "안녕하세요"
String b = "홍길동입니다"

//+연산자 사용
System.out.println(a+b); //안녕하세요홍길동입니다
System.out.println(b+a); //홍길동입니다안녕하세요

두 방법 중에서는 사용성과 성능 차원에서 +연산자를 많이 사용한다

 

문자열 자르기

  substring 메소드

    - substring메소드를 이용헤 원하는 위치의 문자열을 가져올 수 있다.

    - 문자열은 한 글자마다 하나의 인덱스를 가지는데, 가져올 문자열의 시작 인덱스와 끝 인덱스+1 을 매개변수로 받는다.

    - substring(a, b)에서 b인덱스에 해당하는 문자열은 가져오지 않기 때문에 원하는 문자열 인덱스에 +1을 매개변수로 입력한다.

String str = "안녕하세요 홍길동입니다";
System.out.println(str.substring(6,9)); //홍길동

 

최근댓글

최근글

skin by © 2024 ttuttak