| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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
- form
- html
- MIND 2023 #후기
- Docker
- 백엔드스쿨
- Java
- 제로베이스
- 카카오인증토큰받기
- 어떤 개발자?
- 백엔드 로드맵
- jenkins
- oAuth2
- 백엔드공부
- static
- GitHub_Actions
- Interface
- Spring API
- 예외
- feignClient
- 인스턴스
- spring
- 엔티티 매니저
- 카카오사용자정보가져오기
- 엔티티 생명주기
- tag
- 상속
- button
- 카카오인가코드받기
- input
- ci/cd
Archives
- Today
- Total
HiDevelop
[Java] StringBuilder Method 본문
728x90
자바의 String클래스의 경우 변경이 불가능한 시퀀스를 생성하기 때문에 이미 정해진 문자열의 값을 변경할 수 없습니다. 그래서 이 대안으로 변경 가능한 시퀀스를 생성하는 클래스 StringBuilder 와 StringBuffer를 사용하면 됩니다.
String 클래스는 왜 불변할까요? 그 이유는 String 클래스 내부에서 값을 final로 고정하여 값을 공유하는데 중점을 두기위해서 입니다.
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence,
Constable, ConstantDesc {
/**
* The value is used for character storage.
*
* @implNote This field is trusted by the VM, and is a subject to
* constant folding if String instance is constant. Overwriting this
* field after construction will cause problems.
*
* Additionally, it is marked with {@link Stable} to trust the contents
* of the array. No other facility in JDK provides this functionality (yet).
* {@link Stable} is safe here, because value is never null.
*/
@Stable
private final byte[] value;
그럼 StringBuilder와 StringBuffer 중에 어떤 것을 사용해야 될까요?
싱글 쓰레드 와 멀티 쓰레드에 환경에 따라 달라집니다. 만약에 한 번에 하나의 작업만을 실행하는 싱글 쓰레드라면 동기화가 되어있지 않고 구현이 빠른 StringBuilder를 사용하고, 한 번 에 여러 개의 작업을 실행하는 멀티 쓰레드라면 동기화가 되어있는 StringBuffer를 사용하시면 됩니다.
public class stringBuilder {
public static void main(String[] args) {
//문자가 없고 초기 용량이 16자인 문자열 빌더를 생성합니다.
StringBuilder str = new StringBuilder();
String c = "";
//to.String은 str이 나타내는 문자열을 반환합니다!
System.out.println(str.toString());
//str 문자열에 hello world 문자열을 추가합니다.
str.append("hello world");
System.out.println(str);
//set.CharAt(index,변환하고 싶은 문자)는 해당하는 index의 값의 문자를 변환하고 싶은 문자로 바꿔줍니다.
for(int i = 0; i <str.length(); i++)
str.setCharAt(i ,'k');
//단, 음수값이 지정되면 java.lang.StringIndexOutOfBoundsException: String index out of range 오류가 발생
//str의 내용을 초기화된 str1을 생성합니다.
StringBuilder str1 = new StringBuilder(str);
System.out.println(str1);
//지정된 문자열을 생성합니다.
StringBuilder str2 = new StringBuilder("Hi String!");
System.out.println(str2);
}
}
https://www.geeksforgeeks.org/stringbuilder-class-in-java-with-examples/ (StringBuilder에 대한 참조문헌)
728x90
'Java' 카테고리의 다른 글
| [Java] 재귀 메소드 (0) | 2021.11.17 |
|---|---|
| [Java] 원의 넓이와 둘레 구하기 && 소수 판별하기 (0) | 2021.11.16 |
| [JAVA]Math.min/max Method (0) | 2021.11.05 |
| [Java]2차원 배열과 for each문 (0) | 2021.11.04 |
| Jave(Swtich문) (0) | 2021.10.23 |