CS/Java

[CS/JAVA] String, StringBuffer, StringBuilder의 차이 / 접근 제한자 / 클래스 멤버 변수 초기화 순서

dbfl9911 2025. 1. 22. 21:07
반응형


 

 

 

• String, StringBuffer, StringBuilder의 차이를 설명해주세요. 

  • String은 불변의 속성을 가지며, StringBuffer와 StringBuilder는 가변의 속성을 가집니다. 
  • StringBuffer는 동기화를 지원하여 멀티 쓰레드 환경에서 주로 사용하며,
  • StringBuilder는 동기화를 지원하지 않아 싱글 쓰레드 환경에서 주로 사용합니다. 

 

 


 

 

• String 객체가 불변인 이유에 대해 아는대로 설명해주세요.

 

➀ 캐싱 기능에 의한 메모리 절약과 속도 향상

  • 자바에서 String 객체들은 Heap의 String Pool 이라는 공간에 저장되는데, 참조하려는 문자열이 String Pool에 존재하는 경우 새로 생성하지 않고 Pool에 있는 객체를 사용하기 때문에 특정 문자열 값을 재사용하는 빈도가 높을수록 상당한 성능 향상을 기대할 수 있습니다. 

 

➁ thread-safe

  • String 객체는 불변이기 때문에 여러 쓰레드에서 동시에 특정 String 객체를 참조하더라도 안전합니다. 

 

➂ 보안 기능

  • 중요한 데이터를 문자열로 다루는 경우 강제로 해당 참조에 대한 문자열 값을 바꾸는 것이 불가능하기 때문에 보안에 유리합니다. 

 

 


 

 

• 접근 제한자에 대해 설명해주세요.

 

변수 또는 메소드의 접근 범위를 설정해주기 위해서 사용하는 자바의 예약어를 의미하며, 총 4가지 종류가 있습니다.

  • public : 접근 제한이 없습니다. (같은 프로젝트 내 어디서든 사용 가능)
  • protected : 해당 패키지 내, 다른 패키지에서 상속받아 자손 클래스에서 접근 가능합니다. 
  • (default) : 해당 패키지 내에서만 접근 가능합니다.
  • private : 해당 클래스에서만 접근 가능합니다. 

 

 


 

 

• 클래스 멤버 변수 초기화 순서에 대해 설명해주세요.

 

  1. static 변수 선언부 : 클래스가 로드될 때 가장 먼저 초기화됩니다. 
  2. 필드 변수 선언부 : 객체 생성시, 생성자 실행 전에 초기화됩니다.
  3. 생성자 block : 필드 변수 초기화 후, 객체를 완전히 초기화하기 위해 실행됩니다. (JVM은 내부적으로 객체를 생성할 때 thread-safe한 처리를 위해 locking을 사용)

 

 


 

* 위 글은 아래 문서를 참고해 작성했습니다. 

https://dev-coco.tistory.com/153

 

신입 개발자 기술면접 질문 정리 - 자바

💡 Java의 특징을 설명해주세요.Java는 객체지향 프로그래밍 언어입니다. 기본 자료형을 제외한 모든 요소들이 객체로 표현되고, 객체 지향 개념의 특징인 캡슐화, 상속, 다형성이 잘 적용된 언어

dev-coco.tistory.com

 

 


 

review 1회독 2회독 3회독 4회독 5회독
check ✅(1/23) ✅(2/10)      

 

 

반응형