본문 바로가기

Java+Spring Boot

[Java] StringBuilder 의 메서드 String 끼리 '+' 연산을 하여 새로운 문자열을 만들어 내는 방법은 효율성이 좋지 않다. 왜냐하면 String s = "abc"; s += "def"; 라고 했을 때, s 는 "abc" 였다가 "abcdef" 로 초기화 되는데, 이 과정에서 s 는 기존에 참조하던 "abc"의 참조값을 버리고 새로운 String 객체 ("abcdef") 를 참조하게 되는 것이다. 따라서 잦은 문자열 변경 작업이 필요하다면 StringBuilder를 사용하는 것이 좋다. StringBuilder는 내부 버퍼(데이터를 저장하는 메모리)에 문자열을 저장해두고 그 안에서 추가, 수정, 삭제 잡업을 하도록 설계되어 있다. 따라서 String 처럼 새로운 객체를 만들지 않고도 문자열을 조작할 수 있따. StringBuilder.. 더보기
[Java] String 클래스 특징과 메서드 1. 객체를 생성하는 두가지 방법 : 리터럴 대입 vs new String(); 자바의 문자열은 String 객체로 생성된다. String 은 reference 타입이기 때문에 스택영역에 객체의 참조값이 저장된다. 이 얘기를 하고 넘어가는 이유는 String 객체를 생성하는 두가지 방법에 따라서 같은 내용의 문자열을 초기화 할 때 스택 영역에 저장되는 참조값이 달라질 수 있기 때문이다. 1-a. 리터럴 String name = "김현수"; String age; age = "30"; 리터럴(Literal) 은 '문자 그대로의' 라는 뜻의 영단어다. 그 의미와 일맥상통하게, 리터럴로 객체를 생성하는 건 위와 같이 문자열(리터럴)을 그대로 타이핑 해서 변수에 대입하면 끝이다. 자바는 리터럴 대입으로 문자열을 .. 더보기
[Java] 메모리 : 스택(stack)영역과 힙(heap)영역 1. 데이터 타입과 메모리 영역 자바의 데이터 타입은 primitive type과 reference type으로 분류된다. primitive 타입과 reference 타입의 가장 큰 차이점은 다음과 같다. int age = 30; char ch = 'a'; String name = "김현수"; String language = "Java"; 위와 같이 변수를 선언하고 초기화 했을 때, primitive 타입인 age와 ch 는 초기화 한 값인 30과 'a' 가 각각 스택영역에 값 그대로 저장된다. 반면, reference 타입인 String은 스택영역에 초기화 된 값 "김현수", "Java" 가 저장되는 것이 아니라, String 객체가 heap영역에 만들어져 그 객체에 "김현수", "Java"를 담고, .. 더보기