String클래스
정의
문자열을 사용할 수 있도록 자바에서 제공하는 클래스
String 클래스의 구현내용
private final char value[]
구현 내용 특징
- 매게 변수 값을 String클래스의 value변수에 저장
- value변수는 final로 선언 되어 한번 선언된 문자열은 변경되지 않음(=문자열은 불변한다)
String을 선언하는 두 가지 방법
- 문자열을 생성자의 매게 변수로 해서 생성하는 방식
- 이미 생성된 문장열 상수를 가리키는 방식
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
'JAVA > 자바의 클래스' 카테고리의 다른 글
Class클래스로 가져온 클래스 정보 사용법.(feat.리플렉션 프로그래밍) (0) | 2022.11.22 |
---|---|
Class클래스- 정보가져오기 (0) | 2022.11.21 |
clone()메서드 - Object클래스의 메서드 (0) | 2022.11.18 |
hashCode() 메서드 - Object클래스의 메서드 (0) | 2022.11.17 |
equals()-Object클래스의 메서드 (0) | 2022.11.16 |