Java에서 String 객체를 생성하는 두 가지 주요한 방법은 new 키워드를 사용하는 방법리터럴을 사용하는 방법입니다.

 

1. new 키워드를 사용하는 방법

 

new 키워드를 사용하여 String 객체를 생성하면 항상 새로운 객체가 생성됩니다. 
이 객체는 힙 메모리에 할당되며, 각각의 new 연산은 고유한 메모리 위치를 가집니다.

 

String str1 = new String("Hello");
String str2 = new String("Hello");

 

위 코드에서 str1과 str2는 내용은 같지만, 실제로는 서로 다른 메모리 위치에 있는 두 개의 서로 다른 객체입니다.

 

 

2. 리터럴을 사용하는 방법

 

리터럴을 사용하여 String 객체를 생성하면, 해당 문자열은 String 상수 풀(String constant pool)이라고 불리는

메모리 영역에 저장됩니다. String 상수 풀은 중복 String 리터럴의 메모리 사용량을 줄이기 위한

Java의 최적화 기능입니다. 같은 문자열 리터럴을 가진 String 객체는 모두 같은 메모리 위치를 참조합니다.

 

String str3 = "Hello";
String str4 = "Hello";

이러한 차이로 인해 new 키워드를 사용하여 생성된 String과 리터럴을 사용하여 생성된 String은 == 연산자로

비교할 때 다른 결과를 보일 수 있습니다. == 연산자는 두 객체가 같은 메모리 위치를 참조하는지를 비교하기 때문입니다.

 

하지만, equals() 메소드는 두 String 객체의 내용이 같은지를 비교하므로, 어떤 방법으로 String 객체를 생성하든

동일한 문자열 내용에 대해 true를 반환합니다.

'Web > BE' 카테고리의 다른 글

[BE] getParameter(), getAttribute()  (0) 2022.09.18

둘 다 HttpServletRequest의 내장 메서드이다.

주로 데이터를 저장, 이동할 때 사용한다.

1. getParameter()

클라이언트의 HTML 페이지에서 데이터를 받아올 때 사용한다.

 

회원 가입 시, 유저가 입력한 ID, Password 등의 값을 데이터로 가져올 때 사용한다.

 

2. getAttribute()

다른 JSP, Servlet 페이지에 설정된 데이터를 가져올 때 사용한다.

 

setAttribute()를 통한 설정이 되어있어야 가져올 수 있다. (설정이 안되어 있으면 null을 반환한다.)

 

 

보통 HttpServletRequest 객체를 통해 HTML 에서 입력받은 데이터를 getParameter()로 가져와서

변수에 캐싱한 후, HttpServletRequest 객체에 setAttribute()로 저장하고 다른 파일에서 getAttribute()로 사용한다.

'Web > BE' 카테고리의 다른 글

[Java] String 선언 방식 차이  (0) 2023.05.20

+ Recent posts