티스토리 뷰
자바에서 String 타입을 붙일 때 사용하는 방법은 다양하다. 기본 연산자인 +를 비롯하여 StringBuilder, concat 모두 들어보거나 써본 용어일 것이다. 근데 동작 방식에 어떤 차이가 있을까?
먼저 결과값으로만 비교해보자.
public class Main {
public static void main(String[] args){
String str1 = "Hello";
String str2 = "World!";
// '+'
String result1 = str1 + str2;
// concat()
String result2 = str1.concat(str2);
// StringBuilder
StringBuilder result3 = new StringBuilder();
result3.append(str1);
result3.append(str2);
System.out.println(result1);
System.out.println(result2);
System.out.println(result3);
}
}
출력값은 아래와 같다.
HelloWorld!
HelloWorld!
HelloWorld!
모두 동일하게 나온다!! 대체 뭔차이지? 그냥 아무거나 골라쓸랭.. 왜 여러개를 만들걸까 는 모두 내생각이다. 결정적으로 결과값은 모두 동일하지만 성능에 차이가 있다. 또한 초기값에 따라 오류가 날 수 있다.
Concat
concat 명령어를 쓸 경우 초기값이 null이면 안된다.
String str1 = null;
String result = str1.concat("Hi");
System.out.println(result);
// 결과
java.lang.NullPointException
concat 명령어는 더하려는 값을 new String()으로 새로 만든다. 따라서 문자열을 계속해서 붙인다고 가정하면, 붙일 때마다 주소값을 할당받게 되는 것이다.
StringBuilder
내가 StringBuilder 를 쓸 때 편리했던 점은 초기화를 안해도 된다는 것이었다.
StringBuilder result = new StringBuilder();
result.append("Hi");
System.out.println(result);
// 결과
Hi
+ 연산자
자바 버전에 따라 다른데, 1.5 이전에는 concat을 이용하는 방식과 같고 1.5 이후에는 StringBuilder를 이용하는 방식과 같다.
참고사이트
'Java > Java 기초' 카테고리의 다른 글
[Java] startsWith/endsWith (특정 문자로 시작하거나 끝나는지 체크) (0) | 2024.03.18 |
---|---|
[Java] String, StringBuilder, StringBuffer의 차이 (0) | 2024.02.16 |
[Java] char 타입을 int 타입으로 변환하기 - Character.getNumericValue() (0) | 2024.02.08 |
[Java] Iterator, Enumeration (반복자) (0) | 2024.01.29 |
[Java] 컬렉션 프레임워크(Collections Framework) - List (1) | 2024.01.27 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- replaceAll
- 브라우저의 기본 구조
- 마진과 패딩의 차이점
- 엑셀 파일 추출
- 프로그래머스 세로 읽기
- SQL 개발자
- useeffet
- Object.clone()
- SQLD
- 콜백 큐
- 배열만들기1
- StringBuilder
- 호이스팅
- 대소문자 변환
- 블록스코프
- 프로그래머스
- 문자열 반복하기
- 중첩스코프
- nodelist
- n 번째 원소부터
- rep;ㅁce
- 렌더링 과정
- Java
- startsWith()
- 배열 만들기3
- Replace
- 프로그래머스 qr code
- 스코프
- 신입개발자 면접 준비
- replace와 replaceAll의 차이점
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함