본문 바로가기
자바/주니어 개발자를 위한 질문 100가지

주니어 자바 개발자를 위한 100가지 질문(6~10번)

by 공부하는 스프링 개발자 2023. 6. 3.
반응형

지난번에 이어서 오늘은 6~10번을 공부해서 정리하였습니다. 접은 글을 열어보시면 지난번에 작성한 글을 확인하실 수 있습니다.

 

 

주니어 자바 개발자를 위한 질문 6~10번

6. String은 기본 데이터 타입인가요?(Is String the fundamental data Type?)

String은 기본 데이터 타입은 아니고, 문자열을 나타내는 클래스의 객체입니다. 자바의 기본 자료형은 byte, short, int, long, float, double, char, boolean으로 String은 기본 데이터 타입은 아닙니다. 

 

7. 자바에서 문자열을 조작하는 클래스는 무엇이 있고, 각 클래스의 차이점은 무엇인가요?(In Java, what are the classes for manipulatings strings? What is the distinction between them?)

자바에 문자열을 다루는 클래스는 String, StringBuilder, StringBuffer가 있습니다.

  • String: 한번 생성된 문자열은 수정이 불가능하며, String 클래스는 문자열 연결, 검색, 추출, 비교 등의 기능을 제공합니다.
  • StringBuilder: 문자열의 수정이 가능하며, 문자열의 추가, 수정, 삭제 등의 기능을 제공합니다. 일반적으로 문자열을 동적으로 변경해야 하는 경우 사용됩니다.
  • StringBuffer: StringBuilder처럼 문자열을 동적으로 변경할 수 있습니다. StringBuilder와 다른 점은 thread-safe한 동작을 보장하기 위해 동기화되어 있고, 그렇기 때문에 멀티 스레드 환경에서 문자열 조작이 필요한 경우에 사용됩니다. 대신 단일 스레드 환경에서는 StringBuilder가 StringBuffer보다 성능면에서 더 우수합니다.

 

8. String str = "i"와 String str = new String("i")는 동일한가요? (Is String str ="i" synonymous with String str=new String("i")?)

String str="i"는 문자열 리터럴을 사용해서 문자열을 생성하고, 문자열 리터럴은 String Pool에 저장됩니다. 즉, String Pool에 이미 동일한 내용의 문자열이 존재하는 경우에는 새로운 객체를 생성하지 않고, String Pool에 이미 존재하는 문자열 객체를 참조합니다.

 

String str = new String("i")는 새로운 String 객체를 생성합니다. 즉, 새롭게 생성된 String 객체가 메모리의 힙영역에 생성되며, 이렇게 생성된 객체는 String Pool과는 별개의 공간에 저장됩니다.

 

즉, String str = "i"와 String str = new String("i")는 의미상으로는 같은 내용일지라도, 메모리상에서 다른 객체로 취급될 수 있으며, 내용을 비교하고 싶을 때는 equals() 메서드를 사용해야 합니다. (주니어 자바 개발자를 위한 질문 2번 내용 참고)

 

9. 문자열을 반전시키는 가장 좋은 방법은? (What is the best way to invert a string?)

StringBuilder 클래스와 StringBuffer 클래스의 reverse() 메소드를 사용하면 쉽게 반전시킬 수 있습니다. 7번에서 설명한 것처럼 StringBuilder는 StringBuffer보다 단일 스레드 환경에서 더 우수한 성능을 보이며, StringBuffer는 멀티 스레드 환경에서 thread-safe 한 동작을 보장합니다.

String original = "hello world!";
System.out.println(original); // 출력 결과: hello world!

String stringBuilderResult = new StringBuilder(original).reverse().toString();
System.out.println(stringBuilderResult); //출력 결과: !dlrow olleh

String stringBufferResult = new StringBuffer(original).reverse().toString();
System.out.println(stringBufferResult);//출력 결과: !dlrow olleh

 

10. String 클래스의 일반적인 메서드는 무엇이 있나요? (What are the String class's common methods?)

  • length(): 문자열의 길이를 반환
  • charAt(int index): 주어진 인덱스에 해당하는 문자를 반환
  • substring(int beginIndex, int endIndex): 주어진 범위에 해당하는 부분 문자열을 반환
  • concat(String str): 다른 문자열을 현재 문자열과 결합하여 새로운 문자열을 반환
  • equals(Object obj): 다른 객체와 현재 문자열을 비교하여 동등한지 확인
  • compareTo(String str): 다른 문자열과 현재 문자열을 사전 순서로 비교
  • toUpperCase(): 문자열을 대문자로 변환한 새로운 문자열을 반환
  • toLowerCase(): 문자열을 소문자로 변환한 새로운 문자열을 반환
  • trim(): 문자열의 앞뒤 공백을 제거한 새로운 문자열을 반환
  • indexOf(String str): 주어진 문자열이 처음으로 나타나는 인덱스를 반환
  • split(String regex): 주어진 정규식에 따라 문자열을 분할하여 문자열 배열로 반환
  • replace(char oldChar, char newChar): 문자열 내의 모든 oldChar를 newChar로 바꾼 새로운 문자열을 반환
  • equals(Object obj): 다른 객체와 현재 문자열을 비교하여 동등한지 확인
  • contains(CharSequence str): 주어진 문자열 또는 문자열 시퀀스가 현재 문자열에 포함되어 있는지 확인

자바 17 기준으로 더 많은 String 클래스의 메소드를 확인하려면 자바 17 API 문서를 확인하시면 됩니다. 링크

 

String (Java SE 17 & JDK 17)

All Implemented Interfaces: Serializable, CharSequence, Comparable , Constable, ConstantDesc The String class represents character strings. All string literals in Java programs, such as "abc", are implemented as instances of this class. Strings are constan

docs.oracle.com

반응형

댓글