본문 바로가기
공부/자바 (Java)

[Java] String 클래스, StringBuilder와 StringBuffer, Wrapper 클래스

by Lagooni 2022. 1. 5.

String 클래스 선언하기

String str1 = new String("abc");	//인스턴스로 생성된다.
String str2 = "abc";			//상수풀에 있는 문자열을 가리킴

public class StringTest {
    public static void main(String[] args) {
        String str1 = new String("abc");
        String str2 = new String("abc");
        System.out.println(str1 == str2);
        
//결과는 힙메모리에 할당되어 메모리 위치가 다르기 때문에 false

        String str3 = "abc";
        String str4 = "abc";
        System.out.println(str3 == str4);
//결과는 상수풀에 같은 값을 갖기 때문에 true
    }
}

String은 immutable하다.(불변)

한번 선언되거나 생성된 문자열은 변경할 수 없음.

String클래스의 concat() 메서드 혹은 "+"를 이용하여 String을 연결하는 경우 문자열은 새로 생성된다.

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.concat(android);
        System.out.println(System.identityHashCode(java));
    }
}
//결과
//209813603
//1057941451

기존의 java변수와 concat이후의 java는 서로 다른 메모리위치를 가진다.

그렇기 때문에 String객체를 사용하여 문자열을 연결하고 추가하는 것은 메모리를 많이 잡아먹게 된다.


StringBuilder 와 StringBuffer

가변적인 char[] 배열을 멤버변수로 가지고 있는 클래스이다. 문자열을 변경하거나 연결하는 경우 사용하면 편리하다.

StringBuffer는 멀티쓰레드 프로그래밍에서 동기화가 보장된다. 단일 쓰레드 프로그래밍에서는 StringBuilder를 사용하는 것이 좋다.

toString()메서드를 사용하여 String을 반환한다.

public class StringBuilderTest {
    public static void main(String[] args) {
        String str1 = new String("abc");
        String str2 = new String("def");

        StringBuilder buffer = new StringBuilder(str1);
        System.out.println(System.identityHashCode(buffer));
        buffer.append(str2);
        System.out.println(System.identityHashCode(buffer));
        str1 = buffer.toString();
    }
}
//같은 결과를 출력함
//209813603
//209813603

Wrapper클래스

8개의 기본 타입에 해당하는 데이터를 객체로 포장해 주는 클래스를 래퍼 클래스(Wrapper class)라고 한다.

Wrapper클래스는 기본형 데이터 타입을 Object로 변환할 수 있다.

 

참조: http://tcpschool.com/java/java_api_wrapper

 

코딩교육 티씨피스쿨

4차산업혁명, 코딩교육, 소프트웨어교육, 코딩기초, SW코딩, 기초코딩부터 자바 파이썬 등

tcpschool.com

 

댓글