본문 바로가기
JAVA/자바의 클래스

String클래스

by 김꾸꾸(하트) 2022. 11. 19.

     String클래스     

정의

문자열을 사용할 수 있도록 자바에서 제공하는 클래스

 

 

String 클래스의 구현내용

private final char value[]

 

구현 내용 특징

  1. 매게 변수 값을 String클래스의 value변수에 저장
  2. value변수는 final로 선언 되어 한번 선언된 문자열은 변경되지 않음(=문자열은 불변한다)

 

String을 선언하는 두 가지 방법

  1. 문자열을 생성자의 매게 변수로 해서 생성하는 방식
  2. 이미 생성된 문장열 상수를 가리키는 방식
String str1 = new String("abc");//인스턴스 생성, 힙메모리
String str2 = "test";//상수 풀
String str3 = "test";

 

선언 방식 차이점

힙메모리에 생성될 때는 다른 주소값을 가지고,

상수풀의 같은 문자열은 모두 같은 주소 값을 가짐

 

단점

String클래스는 한 번 생성되면 그 내부의 문자열이 변경되지 않기 때문에 String클래스를 사용하여 문자열을 계속 연결하거나 변경하는 프로그램을 작성하면 메모리가 많이 낭비됨.

 

     상수 풀 ( constant Pool )     

정의

상수 값을 저장하는 공간

 

값이 변수에 대입되는 과정

값이 일단 상수 풀에 쓰여 있고,

이 값이 다시 변수 메모리에 복사되는 것

 

     concat()메서드     

정의

문자열을 연결하는 메서드

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

	String java = new String("java");
	String android = new String("android");
	System.out.println(System.identityHashCode(java));//연결 전 java주소값

	**java = java.concat(android);**// java + android 연결 -> 새로운 문자열 생성(기존 문자열X)

	System.out.println(java);
	System.out.println(System.identityHashCode(java));//연결 후 java주소값

}
  }

 

특징

문자열은 한번 선언되면 변경 되지 않아서 두개의 문자열을 연결한다 했을 때 ,

둘 중 하나의 문자열이 변경되는 것이 아니라 두 문자열이 연결된 새로운 문자열이 생성됨



 

 

 

 

 

출처 - Do it! 자바 프로그래밍 입문 (박은종 선생님)

https://www.aladin.co.kr/shop/wproduct.aspx?ItemId=157852460