1. 문자열의 ==와 같음()
문자열의 동일성 판단에서는 ==는 주소가 같은지 판단하고, equal()은 문자값이 같은지 판단한다. 대부분의 경우 ==와 equal()의 결과는 동일합니다. 이는 String 개체가 불변 모드이기 때문입니다. 새 String 개체를 명시적으로 생성하지 않는 경우 Java의 기본 String 개체 저장은 새로 생성된 String 개체를 버퍼에 넣은 다음 매번 버퍼를 결정하는 것입니다. 이 객체가 이미 존재한다면 나중에 생성된 동일한 문자 값을 가진 String 객체도 문자 값 객체가 원래 생성된 주소를 가리킬 것입니다. 즉, 문자값이 동일하면 지질학적 특성도 대부분 동일하다는 것이다. ==는 equal()과 같은 효과를 가집니다. 그러나 객체가 str = "abc"로 직접 할당되는 대신 str = new String("abc")에 의해 생성되거나 일부 문자열 연결 처리 후 생성되거나 StringBuffer와 같은 객체를 통해 생성되는 경우 새 객체가 다음에서 열립니다. 주소의 경우 현재 == 및 equal()의 결과가 다릅니다.
조금 복잡합니까? 여기서는 메모리, 스택 및 객체 스토리지에 대한 이해가 필요합니다. 나는 이 문제에 대해 깊이 생각하고 싶지 않습니다. 이해가 안 되신다면, 두 문자열의 문자값이 같은지, 따로 요구사항은 없는지 확인하고 싶으시다면 == 대신 Equal()을 사용하시면 된다는 점만 기억해주세요. ==, 필요할 때 자연스럽게 이해하실 거라 생각합니다. 실제로 문자열 판단을 위해 ==를 사용할 필요가 거의 없습니다.
2. str.equal("abc") 및 "abc".equal(str) 정보
이에 대해 많은 논란이 있는 것 같습니다. 첫 번째 상수를 마지막에 쓰는 것은 대부분의 사람들의 습관과 우리의 논리적 사고와 일치할 수 있습니다. 그러나 str이 null인지 확인하려면 한 번 더 판단해야 합니다. 그렇지 않으면 여기서 예외가 발생할 수 있습니다. 후자의 작성 방식은 null인지 여부에 대해 더 많은 판단이 필요하지 않습니다. 개인적인 취향으로는 후자의 글쓰기 방식을 선호합니다.
3. String의 null에 대해서
/**
* Java의 String이 null인 경우의 상황 테스트
* 작성일자:2009-6-3
* 작성자:관리자
*
*/
공개 정적 무효 testNull(){
문자열 a= null,b = null,c="헤헤";
System.out.println(a == null);
System.out.println(a+b+c);
}
메소드 실행 결과:
진실
nullnull 하하 그러므로 문자열 병합 작업을 수행할 때 모두 주의를 기울여야 합니다. null이 있는지 확인하는 것을 잊지 마세요. 그렇지 않으면 결과가 그다지 만족스럽지 않을 것입니다!