728x90
똑같은 기능의 객체를 매번 생성하는것보다는 객체 하나를 재사용하는편이 나을때가 많다.
두 코드는 과연 같을까?
String str = "RomaMan"; 개선된 버젼
String str = new String("RomaMan"); //하지 말아야할 행위!
new String("RomaMan")의 경우는 실행 될때마다 String 인스턴스를 새로 만들게 된다. 생성자에 넘겨진 "RomaMan" 자체가 이 생성자로 만들어내려는 String과 기능적으로 똑같기 때문이다.
만약 이 문장이 반복문이라 빈번히 호출되는 메서드 안에 있다면 쓸데없는 String 인스턴스가 수백만개가 만들어 질 수 있다.
개선된 버젼은 새로운 인스턴스를 매번 만드는 대신 하나의 String 인스턴스를 사용하게 된다. 더불어 이러한 방법을 사용한다면 같은 VM안에서 이와 똑같은 문자열 리터럴을 사용하는 모든 코드가 같은 객체를 재사용함이 보장되게 된다.
따라서 위에서 언급한 2개의 코드는 인스턴스를 사용하게된다는점에서는 같다고 볼 수 있겠지만,
동작원리는 다르기 때문에 다른 코드라고 나는 생각한다.(개인생각)
String을 계속해서 수백만개를 만드느냐? 하나의 String 인스턴스를 사용하는가? 이러한 관점이지 않을까?
728x90
'JAVA' 카테고리의 다른 글
[Java] HashMap (0) | 2022.01.26 |
---|---|
[Java] StringTokenizer hasMoreTokens() nextToken() (0) | 2022.01.24 |
[JPA] JPA 기본 객체 매핑 (0) | 2022.01.20 |
[JPA] JPA 기본 시작 (0) | 2021.12.21 |
[JPA] JPA란 무엇인가? (0) | 2021.12.21 |