String 객체와 String 리터럴

하연·2022년 1월 4일
0

HTML/JavaScript

목록 보기
9/10

new 연산자를 통해 문자열 객체를 생성하는 경우 메모리의 Heap 영역에 할당되고
"" 방법인 리터럴을 이용한 경우에는 String Constant Pool이라는 영역에 할당된다.

String str1 = "madplay";
String str2 = "madplay";
String str3 = new String("madplay");
String str4 = new String("madplay");
str1 = str2;


상수풀에 생성된 문자열의 경우 하나만 존재하게 된다. 따라서 str1, str2는 같은 문자열을 참조하게 된다. 반대로 heap 영역에 객체를 생성한 경우 각각의 인스턴스가 생성되기 때문에 str3, str4는 각각 다른 문자열을 참조한다.

이는 자바에서 equals, 자바스크립트에서는 ==로 비교할땐 true값이 나올 수 있지만 자바에서 ==로 자바스크립트에서는 ===로 타입까지 비교할 경우엔 false가 리턴 된다.


typeof
피연산자의 데이터 타입을 반환하는 연산자
반환 값:
undefined
boolean
string
number
object
function
instanceof
개체가 특정 클래스의 인스턴스인지 여부를 나타내는 boolean값으로 반환하는 비교연산자
반환 값:
true
fasle

Typeof의 경우 primivite tpye를 구분할때
instanceof는 class, array, object를 구분할때 활용!

0개의 댓글