일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- FunctionalInterfaces
- 링커
- gradle
- 빌드툴
- 클린코드
- beanfactory
- springboot
- Kotlin for Java Developers
- hibernate
- Spring
- springwebmvc
- Immutable
- ApplicationContext
- java
- JPA
- 토비의스프링
- DesignPattern
- exception
- 링킹
- String
- 자바
- 프록시
- 메이븐
- 컴퓨터시스템
- IOC
- 토비의스프링3.1
- ORM
- lambda
- AutoConfiguration
- DispatcherServlet
- Today
- Total
목록String (3)
엔지니어로 가는 길
아래 두 개의 글에 이어 이번이 세 번째 String 관련 글인 것 같다. Java String으로 보는 동일성과 동등성 Java StringBuilder를 쓰는 이유 Java String은 왜 불변일까? 불변이기 때문에 얻을 수 있는 장점에 대해 알아보자. 장점 1. 안전 Immutable이기 때문에 안전하다. 몇 개의 예시를 살펴보자. 1. 여러 참조 변수가 같은 String 객체를 참조하고 있다고 하더라도 안전하다. String 객체를 누가 조작할 수가 없기 때문이다. 2. String 객체를 이리저리 전달할 때 원본 String 객체가 저장된 주소 자체를 넘겨도 안전하다. 전달받은 곳에서 원본 값을 직접 읽을 순 있으나 조작할 수는 없기 때문이다. 장점 2. 성능 및 효율 Immutable은 안전..
Immutable String은 immutable하다. Immutable이란 변하지 않는다는 뜻이다. 예시를 들어보자. 위와 같이 "Hello"를 담고 있는 str이라는 변수에 "Hello world"를 대입해주면 어떤 일이 벌어질까? "Hello"가 있던 공간에 " world"를 추가하는 것이 아니라 "Hello world"라는 새로운 문자열을 갖게 된다. 정확히는 str이 "Hello"가 있는 메모리 공간을 가리키던 상황에서 "Hello world"가 있는 메모리 공간을 가리키게 된다. (만약 위의 상황에서 String str2 = "Hello world"; 라는 코드를 추가한다면 이때 str2와 str1은 같은 곳을 가리키게 된다. 참고: Java String literal과 new String()..
String literal vs new String() str1을 String literal이라 말한다. str1과 str2는 어떤 차이가 있을까. 위의 그림대로 문자열을 만들어보자 이때 s3와 s4는 같은 곳을 가리키고 있다. String literal은 같은 문자열인 경우 메모리 전체에서 하나만 존재함을 알 수 있다. 하지만 s1과 s2를 보면 같은 문자열임에도 s3, s4가 가리키는 곳과 다른 곳을 가리키고 있고, 심지어 s1과 s2끼리도 서로 다른 곳을 가리키고 있다. 즉, new 연산자를 통해서 String 객체를 만들면 문자열이 같아도 매번 다른 공간에 문자열이 생기는 것임을 알 수 있다. 테스트해보자. 동일성과 동등성 동일할 때와 동등할 때 모두 '같다'라는 단어를 사용할 수 있지만 그 뜻이..