매일 10 분 16 의 자바 학습 노트

자바 문자열 의 경우 주의해 야 할 특성 이 있 습 니 다. - 문자열 상수 와 문자열 풀 - 가 변 적 이지 않 음 (Immutable) 문자열
1. 문자열 상수 와 문자열 값 은 다음 코드 세그먼트 로 설명 합 니 다.
String name1 = "zhangsan";
String name2 = "zhangsan";
String name3 = new String("zhangsan");
String name4 = new String("zhangsan");
System.out.println(name1 == name2);
System.out.println(name1 == name3);
System.out.println(name3 == name4);

//         true,false, false   

분석: 자바 에서 효율 적 인 고려 를 위해 '' 에 포 함 된 문자열, 즉 문자열 상수 (String literal) 는 내용 이 같 으 면 (번호, 크기 가 같 으 면) 프로그램 코드 에 몇 번 나타 나 든 JVM 은 하나의 String 인 스 턴 스 만 만 만 들 고 문자열 풀 (String pool) 에서 유지 합 니 다.첫 번 째 결 과 는 true 입 니 다. name 1 을 새로 만 들 때 JVM 은 문자열 풀 에 String 인 스 턴 스 를 만들어 name 1 에 참고 하고 두 번 째 줄 은 name 2 가 문자열 풀 에 있 는 String 인 스 턴 스 를 직접 참고 하도록 하기 때 문 입 니 다.뒤의 false 에 대해 서 는 new 때 새로운 대상 을 만 들 었 기 때문에 name 3 과 name 4 는 모두 새로운 String 인 스 턴 스 를 참고 합 니 다.대상 의 실질 내용 이 같은 지 비교 하려 면 = = 을 사용 하지 말고 equals () 를 사용 하 십시오. 마찬가지 로 문자열 의 실제 문자 내용 이 같은 지 비교 하려 면 = = 을 사용 하지 말고 equals () 를 사용 하 십시오.
2. 가 변 적 이지 않 은 문자열 은 자바 에서 문자열 대상 이 만들어 지면 대상 의 내용 을 변경 할 수 없고 대상 에서 문자열 내용 을 변경 할 수 있 는 방법 이 없습니다.연결 문자열 을 + 로 구현 하 는 것 은 어떻게 이 루어 집 니까?예 를 들 면:
String name1 = “Java”;
String name2 = name1 +“World”;
System.out.println(name2);

위 프로그램 세 션 에 서 는 자바 월 드 를 표시 합 니 다. 문자열 내용 대상 을 바 꿀 수 없 기 때문에 name 1 에서 참고 한 문자열 대상 에 월 드 내용 을 직접 추가 하 는 것 이 아 닙 니 다.역 컴 파일 후 얻 을 수 있 습 니 다: + 연결 문자열 을 사용 하면 자바. lang. StringBulider 대상 을 만 들 고 append () 방법 으로 + 좌우 양쪽 문자열 을 추가 합 니 다. 마지막 으로 toString () 으로 변환 합 니 다.요약: 반복 적 인 장소 에서 순환 이나 재 귀 할 때 + 연결 문자열 을 사용 하지 마 십시오. 이 는 새로운 대상 이 자주 발생 하여 효능 에 부담 을 줄 수 있 습 니 다.

좋은 웹페이지 즐겨찾기