크기가 정해지지 않은 클래스형 변수 String
문자열과 같이 크기가 정해지지 않은 변수를 클래스 변수라고 합니다.

메모리에는 Java를 실행할 때 미리 할당받는 공간이 존재하는데, 이 공간 내부에서도 총 4가지의 공간으로 구분됩니다.
- static 공간 : main 함수 전에 동작하며, 정적인 데이터를 저장할 때 사용
- heap 공간 : main 함수 이후 동작하며, 데이터를 동적으로 저장할 때 사용
- stack 공간 : main 함수 이후 동작하며, 특정 행위(메소드)의 결과를 저장할 때 사용
- String Constant Pool : String 저장 공간
String은 String Constant Pool이라는 별도의 저장 공간을 사용하며, 저장 방식 또한 기존 변수와는 다르게 동작합니다.
아래의 코드를 보면, s1에 “안녕”이라는 문자열을 우선 저장한 후 출력합니다.
package ex01;
public class Var04 {
public static void main(String[] args) {
String s1 = "안녕";
System.out.println(s1);
}
}
- 결과

이후, s1에 “굿나잇”이라는 문자열을 대입하면, “안녕”이라는 문자열이 덮어씌워지는 것이 아닌, 새로운 저장공간에 “굿나잇”이 저장되고, s1은 “안녕” 대신 “굿나잇”을 가리키게 됩니다.
s2에 “굿나잇”을 대입하면, s1이 가리키고 있는 “굿나잇”을 똑같이 s2가 가리키게 됩니다.
s1에 다시 “헬로우”를 대입하면, “굿나잇”을 덮어씌우는 것이 아닌 새로 “헬로우”라는 문자열을 만들고 s1은 “굿나잇” 대신 “헬로우”를 가리키게 됩니다.
package ex01;
public class Var04 {
public static void main(String[] args) {
String s1 = "안녕";
s1 = "굿나잇";
System.out.println(s1);
String s2 = "굿나잇";
s1 = "헬로우";
System.out.println(s2);
System.out.println(s1);
}
}

- 결과

Share article