자바 기초:String 류 의 흔 한 면접 문제 모음

1.String 형식 으로 정 의 된 s1 과 s2 가 동일 한 지 판단 합 니까?
 String s1 = " abc ";
 String s2 = " abc ";
 System.out.println(s1 == s2);
 System.out.println(s1.equals(s2));

결과:true true
지식 점
내용.
==
"같 음",자바 에서 기본 데이터 형식 이 라면==그 값 이 같 는 지 비교 합 니 다.만약 인용 데이터 형식 이 라면 메모리 에 저 장 된 주소 가 같 는 지 비교 합 니 다.똑 같이 true 로 돌아 가면 반대로 false 입 니 다.
equals
자바 의 모든 클래스 는 Object 라 는 초 클래스 에 계승 되 었 습 니 다.Object 에서 equals 방법 을 정 의 했 습 니 다.이 초기 행 위 는 대상 의 메모리 주 소 를 비교 하 는 것 이지 만 일부 라 이브 러 리 에서 이 방법 은 덮어 졌 습 니 다.예 를 들 어 String,Integer,Date 는 이러한 클래스 에서 equals 가 자 생 적 으로 실현 되 었 고 더 이상 쌓 여 있 는 저장 주소 가 아 닙 니 다.String 클래스 에서 equals 는 대상 의 내용(문자 시퀀스)이 같은 지 비교 합 니 다.
2.다음 이 말 은 메모리 에 몇 개의 대상 을 만 들 었 습 니까?
String s1 = new String(" abc ");

결과:두 대상
지식 점
내용.
public String( String original )
상수 탱크 에 우선"abc"문자열 파 라 메 터 를 만 듭 니 다.메모리 에 만 든 문자열 파 라 메 터 는 상수 탱크 의 사본 입 니 다.주소 값 은 참조 s1 을 가리 키 고 있 습 니 다.
3.String 형식 으로 정 의 된 s1 과 s2 가 동일 한 지 판단 합 니까?
String s1 = new String( "abc" );
String s2 = " abc ";
System.out.println( s1 == s2 );
System.out.println( s1.equals( s2 ));

결과:false true
문제 에서 s1 은 메모리 의 주소 값 을 가리 키 고 s2 는 상수 탱크 의 주소 값 을 가리킨다.4.String 형식 으로 정 의 된 s1 과 s2 가 동일 한 지 판단 합 니 다
String s1 = "a" + " b " + " c ";
String s2 = " abc ";
System.out.println( s1 == s2 );
System.out.println(s1.equals( s2 ));

결과:true true
지식 점
내용.
상수 최적화 메커니즘
자바 컴 파일 러 는 상수 최적화 체 제 를 가지 고 있 습 니 다.문제 에서'abc'는 문자열 상수 입 니 다.예 를 들 어 비슷 한 면접 문제 byte b1=3;byte b2 = 4; byte b3 = b1 + b2; byte b4 = 3 + 4; b3 오류,b4 정확.
5.String 형식 으로 정 의 된 s1 과 s2 가 동일 한 지 판단 합 니까?
String s1 = " ab ";
String s2 = " abc ";
String s3 = s1 + " c ";
System.out.println( s3 == s2 );
System.out.println( s1.eaquals( s2 ));

결과:false true
s1+"s2"에서 s1 은 문자열 변수 에 해당 하 며 직접 추가 할 수 없습니다.자바 언어 는 문자열 직렬 기호("+")와 다른 대상 을 문자열 로 변환 하 는 특수 한 지원 을 제공 합 니 다.문자열 직렬 연결 은 StringBuilder(또는 StringBuffer)클래스 와 append 방법 을 통 해 이 루어 집 니 다.문자열 변환 은 toString 방법 을 통 해 이 루어 집 니 다

좋은 웹페이지 즐겨찾기