String과 StringBuffer, StringBuilder의 차이점을 말해주세요.
String은 불변성이라는 속성을 지니고 있기 때문에 변하지 않는 문자열을 사용할 경우 성능이 좋습니다. 반대로 변하는 문자열을 저장할 경우 이전의 문자열을 갖고 있던 메모리가 Garbage로 남게 되어 힙메모리 부족 문제로 이어질 수 있습니다.이를 해결하기 위해 사용되는 것이 StringBuffer와 StringBuilder인데, 두 클래스 모두 가변성이라는 속성을 지니고 있습니다.
따라서 문자열 추가, 삭제, 수정을 할 경우에 사용하는 것이 좋습니다.
두개의 차이점은 StringBuilder는 비동기화이기 때문에 멀티 쓰레드 환경에서는 적합하지 않지만 단일 쓰레드 환경에서 매우 뛰어난 성능을 보이며, StringBuffer는 동기화가 지원되어 멀티쓰레드 환경에서 사용하는 것이 적합합니다.
String, StringBuilder, StringBuffer는 모두 Java에서 문자열을 다루는 클래스이지만, 불변성 여부와 동기화 지원 여부에서 차이가 있다.
String
- 불변
StringBuilder
- 가변 - 문자열 연산 등으로 기존 객체의 공간이 부족하게 되는 경우,기존의 버퍼 크기를 늘리며 유연하게 동작한다.
- 동기화를 보장하지 않음.
StringBuffer
- StringBuilder와 같은 추상 클래스를 상속받아 구현되어 있어, 마찬가지로 가변
- 멀티스레드 환경에서도 동기화를 지원함.
toString()과 String.valueOf() 의 공통점과 차이점에 대해 말해주세요.
두 메소드 모두 Object값을 String형으로 변환해준다는 공통점이 있지만 toString()의 경우 null 값을 형 변환시 NullPointerException이 발생하며, String.valueOf()는 파라미터로 null이 오면 null 이라는 문자열을 출력한다는 차이가 있습니다.StringTokenizer와 split의 차이점에 대해 말해주세요.
StringTokenizer는 java.util에 포함되어 있는 클래스이고 split은 String 클래스에 속해 있는 메서드 입니다.StringTokenizer는 결과값이 문자열이지만 split은 결과 값이 문자열 배열입니다.
오버로딩과 오버라이딩의 차이를 설명해주세요.
오버로딩은 같은 클래스 내에서 매개변수의 타입이나 개수를 다르게 해서 같은 이름의 메서드를 여러개 정의하는 것을 의미하며, 오버라이딩은 상위 클래스에 존재하는 메서드를 하위 클래스에서 재정의 하는 것을 의미합니다.
오버라이딩(Overriding): 상위 클래스에 있는 메서드를 하위 클래스에서 재정의 하는 것을 의미
오버로딩(Overloading): 같은 클래스 내에 동일한 이름을 가진 메서드가 있지만, 매개 변수의 타입 혹은 개수가 다르게 정의하는 것을 의미
자바의 접근 제어자에 대해 설명해주세요.
자바에서 클래스나 클래스 멤버를 사용할 때 접근 범위를 지정해주는 역할로, public, protected, default, private 의 4가지 종류를 가지고 있습니다.
public은 접근 제한이 없어 모든 클래스에서 접근 가능하며, private은 같은 클래스 안의 멤버들만 접근 가능합니다. protected는 같은 패키지 안의 모든 클래스에서 접근 가능하며, 다른 패키지라도 자식 클래스에서 접근 가능하고, default는 접근 제어자가 명시되지 않는 경우를 의미하며 해당 패키지 내에서만 접근 가능합니다.
자바에서 패키지란 무엇인지 간단하게 설명해주세요.
Java 패키지는 관련 클래스와 인터페이스 등을 그룹화하는 방법입니다.
기능과 사용성 등으로 코드 파일을 조직화 하며 접근 제어자 등을 통해 다른 패키지의 접근으로부터 보호할 수 있습니다. import 키워드를 사용하여 다른 클래스와 인터페이스로 가져올 수 있습니다.
JRE, JDK 차이는?
JRE(Java Runtime Environment)란?
JRE란 번역하면 자바 실행환경으로 자바 프로그램을 실행하는데 필요한 것이다.
즉, 자바 프로그램을 실행시키는데는 문제가 없지만 자바 프로그램을 코딩할 때 jdk가 아니라 jre를 사용하면 문제점이 생길 수 있다.
JDK(Java Development Kit)란?
번역하면 자바 개발 키트이다. 간단하게 설명하면 자바를 개발하는데 필요한 기능들이 들어간 것이다.
여기에는 물론 자바를 실행하는데 필요한 jre도 포함되어 있어서 jdk를 다운로드 받으면 jre 또한 포함되어 있다.
⇒ 자바 프로그램을 자바 실행환경으로 실행시키는데 필요한 것이 바로 JRE이고 자바 프로그램을 개발하는데 필요한 기능들이 들어가 있어, 개발할 때 필요한 것이 JDK이다.
