일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 트랜잭션
- Spring
- aop
- 객체지향프로그래밍
- 자바
- git
- response
- 관점지향프로그래밍
- network
- Redis
- aspect
- RestControllerAdvice
- SQL
- OOP
- Spring Security
- 스프링부트
- spring boot
- Filter
- proxy pattern
- http
- 디자인패턴
- java
- request
- mybatis
- Interceptor
- exception
- MYSQL
- 스프링 시큐리티
- 인터셉터
- 스프링
- Today
- Total
목록String (2)
장쫄깃 기술블로그

들어가며 Java에서 문자열을 다루는 대표적은 클래스로 String, StringBuffer, StringBuilder 가 있다. 연산이 많지 않을때는 특별한 이슈가 발생할 가능성이 거의 없다. 하지만 연산횟수가 많아지거나 멀티스레드, 경쟁 상태(Race Condition) 등의 상황이 자주 발생하면 각 클래스의 특징을 이해하고 상황에 맞는 적절한 클래스를 사용해야 한다. String, StringBuffer, StringBuilder의 기본적이니 차이는 String은 불변(Immutable), StringBuffer와 StringBuilder는 가변(Mutable) 이다. 1. String String 객체는 한번 생성되면 할당된 메모리 공간이 변하지 않는다. concat 메소드 또는 + 연산자를 통해..

String Constant Pool 흔히 new 연산자로 String 객체를 생성하지 않는 것이 좋다는 말을 볼 수 있다. String literal로 생성하면 해당 String 값은 Heap 영역 내 "String Constant Pool"에 저장되어 재사용되지만, new 연산자로 생성하면 같은 내용이라도 여러 개의 객체가 각각 Heap 영역을 차지하기 때문이다. 그림으로 살펴보자. String literal로 생성한 객체는 String Pool 영역에 들어간다. String literal로 생성한 객체의 값이 이미 String Pool에 존재한다면, 해당 객체는 String Pool의 reference를 참조한다. 그림에서 s1과 s2가 같은 곳을 바라보는 이유도 이 때문이다. new 연산자로 생성..