반응형
해당 강의를 듣고 정리한 것입니다
https://programmers.co.kr/learn/courses/9
스트링 클래스 문제점
: String클래스는 문자열을 다룰 때 사용하는 클래스, 불변 클래스이다.
문제가 없는 경우
public class StringExam2 {
public static void main(String[] args) {
String str1 = "hello world";
String str2 = str1.substring(5);
System.out.println(str1);
System.out.println(str2);
}
}
>>
hello world
world
- substring메서드는 5번째부터 문자열을 잘라서 새로운 문자열을 반환하는 메서드
- 그러므로, 기존의 str1은 전혀 변화 없다.
String클래스를 사용할 때 문제가 발생하는 경우
public class StringExam2 {
public static void main(String[] args) {
String str1 = "hello world";
String str2 = str1.substring(5);
String str3 = str1 + str2;
System.out.println(str3);
}
}
>>hello world world
해당코드의 내부적으로 해당 코드와 같이 실행됨.
String str4 = new StringBuffer().append(str1).append(str2).toString();
String + String을 반복해서 사용한다면??
String str5="";
for(int i = 0; i<100; i++) {
str5 =str5 +"*";
}
해당 코드에선 new 연산자가 100번 사용된다!! 그러면 그만큼 성능이 느려짐!!
즉, Stirng + String을 사용하는 만큼 객체가 새로 생성됨 => 반복해서 사용 시 성능에 문제가 생길 가능성이 있음
따라서 String을 유동적으로 사용해야하는 객체라면 StringBuffer를 사용해서 생성하자!!!
StringBuffer str5 = new StringBuffer();
for(int i=0; i<100; i++) {
str5.append("*");
}
해당 코드처럼 바꾸어 사용해야 한다!!!
반응형
'Language > Java' 카테고리의 다른 글
자바 중급6 - java.util패키지 (0) | 2022.01.17 |
---|---|
자바 중급5 - Math클래스 (0) | 2022.01.15 |
자바 중급3 - 스트링버퍼(StringBuffer) (0) | 2022.01.14 |
자바 중급2 - java.lang 패키지/오토박싱 (0) | 2022.01.14 |
자바 중급1 - Object클래스, equals, toString, hashcode (0) | 2022.01.13 |