다른 언어에서는 문자열을 char형의 배열로 다루었으나 자바에서는 문자열을 위해 String 클래스를 제공한다.
컴파일시 문자열 리터럴을 모두 읽어 constant poll에 저장해 둔다.
클래스 파일을 열면 리터럴들이 모여있는것을 확인할 수 있다.
예를들어 + 연산자로 문자열을 조작하면 새로운 리터럴이 생성된다.
리터럴 이란?
String a = "a" <- "a" 가 리터럴이다.
String a = "a"
String b = "b"
a = a + b;
라고 하게 된다면 "ab"가 생기고 변수 a 가 가리키는 곳이 "ab"의 위치가 된다.
그래서 문자열을 조작할땐 String 클래스가아닌 내부에 버퍼를 가지고있는 StringBuffer나 StringBuilder를 사용하면 좋다.
https://docs.oracle.com/en/java/javase/19/docs/api/java.base/java/lang/String.html
자바공식 문서에 함수들이 상세히 나와있다.