[Java]toString()에 관하여

우니·2023년 7월 23일
0

toString()이란?

쉽게 말해서 객체가 가지고 있는 정보나 값들을 문자열로 만들어 리턴하는 메소드이다

toString()의 더하기 연산

자바의 클래스 중에서 더하기 연산을 제공하는 것은 String 클래스 밖에 없습니다.
"다른 객체도 더하기 연산이 되는데요?"라고 질문한다면 객체에 더하기를 하면 toString() 메소드가 호출되는 것입니다. 결론적으로는 String을 더하는것입니다.

toString() 더하기 연산의 문제점

String은 immutable한 객체입니다. immutable의 사전적 의미는 "불변의"로, String은 불변의 객체, 변할 수 없는 객체입니다.
즉, 한번 만들어지면 더이상 그 값을 바꿀 수 없다는 의미입니다.
String 문자열을 더하면 기존의 객체는 버려지고 새로운 String 객체가 생성됩니다. 그렇기 때문에 더하기 연산이 매우 많은 경우 프로그램의 메모리와 효율성에서 단점을 가져다 준다고 말합니다.

해결책 : StringBuffer, StringBuilder 사용

StringBuffer와 StringBuilder의 경우 객체의 공간이 부족해지는 경우 버퍼의 크기를 유연하게 늘려주는 가변적 성질을 가지고 있습니다.

.append() .delete() 등을 이용하여 동일 객체 내에서 문자열 크기를 변경하는 것이 가능합니다.

사실 앞서 말한 더하기 연산에서도 StringBuilder가 쓰이긴 합니다.

String a = “hello” + “world”;
String a = new StringBuilder(“hello”).append(“world).toString()

더하기 연산이 사용될때 내부적으로는 이러한 코드가 돌아가는데 어찌 됐든 새로운 String 객체를 만드는것에는 변함이 없습니다. 또한, 코드가 이런식으로 돌아가니 시간적으로 비효율적입니다.

0개의 댓글