자바 인터뷰 질문에 대답해야합니다 (문자열 기사)

면책 조항 :이 문서는 블로거 원본입니다, 추적 에 의해-SA의 CC 4.0 저작권 계약, 복제, 원본 소스 링크이 문을 첨부 해주세요.
이 링크 : https://blog.csdn.net/conconbenben/article/details/102649425

최근, 많은 학습 자바 내가, 그것을 구성하는 것이 필요하다고 생각하는 이해하고 미래 문자열 심사관의 인터뷰에서 질문에 응답 초보자를 용이하게하기 위해, 관련 문제를 물어 흰색 문자열입니다.

당신은 선택적으로 다음 사항을 읽을 수있는 디렉토리에 따라, 자바 개발 몇 년의 경험을 가지고, 의견을 환영 보충 경우.

질문은 다음과 같습니다 :

0.String 가장 기본적인 그것? 데이터의 유형
1.String 상속 할 수 있습니까?
차이 2.Java 문자열 A = "ABC"와 문자열 A = 새로운 문자열 ( "ABC ") 의를?
3. 왜 문자열은 불변?
4. 문자열 상수 풀은 무엇입니까?
5. 문자열 초기화 코드 : = 새 문자열 ( "문자열 a를 ABC"); 얼마나 많은 객체를 생성?
6.String 집단 소송 인턴 ()인가?
7. 문자열 비교 차이를 ()와 '=='동일?
어떻게 8.String StringBuffer와 StringBuilder의 세 각 스레드 안전?
9.String, 및 StringBuffer와 StringBuilder의 차이?
10. 어떻게 문자열의 복수를 연결합니다.
11. 문자열을 분할하는?
12. 어떻게 두 개의 문자열과 동일 여부를 확인하는 방법?
13.String 클래스, 문자열의 길이는 제한이 있습니까?
14.Java 문자열 "+"커넥터 접합 원리 문자열?

? 0.String는 데이터의 가장 기본적인 유형입니다
자바의 기본 데이터 타입은 바이트, INT, 문자, 긴 포함 플로트, 더블, 부울, 짧은 팔의 총, 문자열은 클래스의 java.lang 패키지에 정의되어 있습니다. 그것은 기본 데이터 유형이 아닙니다.


여부 1.String는 상속 될 수 있을까?
아니, 때문에 유사한 최종 String 클래스를.


문자열 A = "ABC"및 문자열 A = 새로운 문자열 ( "ABC 2.Java ") 의 차이?
문자열 A = "ABC"가 상수를 이용하여 초기화되어, 메모리 저장 문자열의 초기화 후의 상수 풀
문자열 A = 새로운 문자열 ( "ABC ") 스트링 객체를 생성하기 위해, JVM은 스트링 객체를 생성하지만, 문자열 풀에 저장되지 않는다.


3. 왜 문자열은 불변?
유사한 최종 String 클래스 때문입니다.


4. 문자열 상수 풀은 무엇입니까?
문자열 풀은 기존의 저장 힙 메모리 문자열 상수에서 별도의 메모리의 특별한 영역입니다. 이러한 객체는 응용 프로그램의 수명주기에서 문자열 변수로 알려져 있습니다.
예를 들면 : 직접 만든 따옴표 문자열, 문자열 A = "ABC"이 영역에 저장 "ABC"입니다.


5. 문자열 초기화 코드 : = 새 문자열 ( "문자열 a를 ABC"); 얼마나 많은 객체를 생성?
위의 코드 라인은 하나 또는 두 개의 문자열을 생성합니다. 이미 문자열 상수 수영장에서 문자열 "ABC"를하는 경우, 그것은 단지 "ABC"문자열을 생성합니다. 문자열 정수 풀은 "ABC"가 아닌 경우, 문자열 풀에 다음 첫 번째는 힙 메모리에 이전에 생성 된 생성됩니다,이 상황은 두 개의 객체를 생성합니다.


6.String 집단 소송 인턴 ()인가?
이 메소드가 호출 될 때 풀에 이미 포함되어있는 경우, 문자열이 객체를 식별 문자열 등호 (Object) 메소드와 같은, 그것은 문자열 풀을 반환합니다. 그렇지 않으면,이 String 객체가 풀에 추가하고,이 String 객체를 반환합니다.
그것은 두 문자열 s와 t, s.intern에 대한 다음 () == t.intern은 ( ) 에 해당하는 경우에만 대해서는 s.equals (t)가 true 인 경우. 이 s 및 t)는 다른 캐릭터 오브젝트이고, 같은 문자 시퀀스 모두 인턴 (다음에 호출이있는 경우 두 가지 변수에 의해 참조되는 하나의 텍스트 스트링 풀을 초래할 것이라는 것을 의미한다.
7. 그 차이를 비교하고 '=='문자열을 동일?
문자열이 일치하는 문자의 비교 문자열 값 문자 배열 여부, 그 비교는 문자열의 값이 문자열 값 == 상대적으로뿐만 아니라 두 개의 문자열을 비교하지 않는 것입니다, 재정의 된 방법과 동일 곳 메모리 주소는 동일합니다.


어떻게 8.String StringBuffer와 StringBuilder의 세 각 스레드 안전?
문자열 StringBuffer를 스레드 안전, 모두 StringBuilder가 아닌 스레드 안전합니다.


9.String, 및 StringBuffer와 StringBuilder의 차이?
String 클래스는 불변 값, 새로운 객체를 생성하는 String 객체에 각 작업이며, StringBuffer를 모두 StringBuilder와 객체 단위로하지 않고 원래의 객체에서 작동하도록 허용하며 StringBuffer를 스레드 안전하지만,보다 더 효율적입니다 낮은, 가장 높은 StringBuilder의 효율성,하지만 스레드 안전합니다.


10. 어떻게 문자열의 복수를 연결합니다.
문자열 : 자바 API를 해석함으로써, 당신은 자바 문자열 연결에 대한 특별 지원을 제공하는 것을 알 수 있습니다. 연결이 모두 StringBuilder 문자열 (또는 StringBuffer를) 클래스와 공정을 추가함으로써 달성된다.
StringBuffer를이 : 사용 달성에 추가
하여 StringBuilder를 : 사용이 달성하기 위해 추가합니다.


11. 문자열을 분할하는?
당신은 기능으로 구분 된 문자열을 사용할 수 있습니다 : 공공 문자열 [] 분할 (문자열 정규식), 구분되는 문자열 전달을, 마지막 하나는 바로 들어오는 문자 인 경우, 널 (null) 문자의 배열이 지속되지 않습니다 반환합니다 문자열입니다.


12. 어떻게 두 개의 문자열과 동일 여부를 확인하는 방법?
은 "=="를 사용하거나 equals 메소드를 사용하여 문자열이 같은지 여부를 판단하는 방법은 두 가지가 있습니다. 은 "=="연산자 비교 문자열 값뿐만 아니라, 비교 참조하는 메모리 어드레스뿐만 아니라, 사용시. 대부분의 경우, 우리는 평등의 값을 비교하기 위해 equals 메소드를 사용하여이 시간을 결정해야합니다.
이 또한있는 equalsIgnoreCase이 경우 문자열 값을 비교 무시하는 데 사용할 수 있습니다.


13.String 클래스, 문자열의 길이는 제한이 있습니까?
당신은 문자 배열이 최대 길이를 정의하는 문자열을 저장하는 문자 배열을 사용하여 소스 문자열 클래스를 참조하십시오, 그래서 이론적으로, 문자열에는 길이 제한이 없으며, 얼마나 많은 메모리의입니다 제한 할 수 있습니다.


14.Java 문자열 "+"커넥터 접합 원리 문자열?
문자열 문자열의 StringBuilder는 APPEND의 방법에 의해 달성 중간 접합 과정을 통해 이동합니다.

프로그램이 바느질 문자열을 많이 가지고하면 임시 String 객체를 기본 새 많이 필요하지 않습니다, 직접 모두 StringBuilder 달성 할 것입니다. 문자열이 때 접합 널 참여 "널 (null)"가 될 것이라고합니다.

업데이트 롤업 관련 문제는 계속 점차 코드와 자세한 분석 원칙을 추가 할 수 있습니다.

                                                                             

 

추천

출처blog.csdn.net/conconbenben/article/details/102649425