일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 데이터베이스
- 자바기본
- 패스트캠퍼스후기
- 자바
- ncs
- DB
- 스프링
- 재택근무
- 패스트캠퍼스
- DesignPattern
- 직장인인강
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online강의
- 자바예제
- 디자인
- Spring
- js
- 직장인자기계발
- 웹
- 디자인패턴
- String
- 국비
- java
- java기초
- 자바기초
- linux
- 리눅스
- 패캠챌린지
- 한번에끝내는JavaSpring웹개발마스터초격차패키지Online
- javabasic
- 자바연습문제
Archives
- Today
- Total
FIF's 코딩팩토리
[Java]String 클래스의 문제점 본문
반응형
스트링클래스는 문자열을 다룰때 사용한다.
스트링 클래스에서 + 연산을 할경우 내부적으로 StringBuffer클래스가 만들어진후 append()메소드를 사용하여 문자열을 연결한다.
String str1 = "hello world";
String str2 = str1.substring(5);
System.out.println(str1);
System.out.println(str2);
String str3 = str1 + str2;
System.out.println(str3);
위아래 코드는 똑같은 결과를 가져온다.
String str4 = new StringBuffer().append(str1).append(str2).toString();
System.out.println(str4);
+연산을 하나 할 경우는 크게 상관이 없다.
그럼 다음처럼 + 연산을 50000번을 한다고 하면?
String str5 = "";
for (int i = 0; i < 50000; i++) {
str5 = str5 + "*";
}
System.out.println(str5);
내부적으로 StringBuffer 객체가 50000번이나 만들어진다.
자바는 new연산자를 많이 사용할 수록 프로그램의 속도가 저하되는 문제점이 있다.
따라서 문자열을 반복문 안에서 많이 사용한다면 StringBuffer 클래스의 append()메서드를 사용한 후String클래스의 toString()메서드를 사용하자.
for (int i = 0; i < 50000; i++) {
sb.append("*");
}
String str6 = sb.toString();
System.out.println(str6);
실제 실행 시간을 비교해 보면 크게 차이난다.
아래가 StringBuffer 클래스를 사용했을 경우다.
반응형
'Back-End > Java(자바)' 카테고리의 다른 글
[Java] Set (0) | 2019.11.07 |
---|---|
[Java] 제네릭(Generic) 사용 예 (0) | 2019.11.07 |
[Java] 프로그램 실행 시간 측정 (0) | 2019.11.07 |
스트링버퍼 클래스 (0) | 2019.11.05 |
java.lang 패키지와 오토박싱/오토언박싱 (0) | 2019.11.04 |
Comments