자바 빈 문자열 에 대한 판단
문자열 String str = "가 있다 고 가정 합 니 다.
1. "".equals(str);//true
2. str.length()==0;//true
3. str.isEmpty();//true, jdk 6 이후 의 새로운 방법.
4. str == "";//true
만약 에 몇 억 번 의 순환 을 통 해 이 네 가지 방법의 운행 효율 을 테스트 한다 면 첫 번 째 는 가장 느 리 고 세 가지 시간 차이 가 많 지 않 으 며 나 초 급 을 비교 하면 마지막 판단 방법 이 가장 빠르다.
인터넷 에서 도 마지막 하 나 는 가장 직관 적 이 고 추천 하 는 문법 이 라 고 말한다.
그러나 자바 를 배 울 때 문자열 을 배 울 때 모든 자 료 를 반복 적 으로 강조 하 였 습 니 다. 문자열 이 같은 지 비교 할 때 = =, equals () 방법 을 사용 해 서 는 안 됩 니 다. 빈 문자열 에 대해 서 는 예외 입 니까?
간단하게 몇 가지 테스트 방법 을 써 서 테스트 했다.
1. 다음 에 되 돌아 오 는 것 은 true 입 니 다. 문자열 상수 가 문자열 상수 탱크 에 저장 되 어 있 고 같은 문자열 이 상수 탱크 에 한 부 만 저장 되 어 있 기 때문에 아래 의 두 빈 문자열 이 인용 한 주 소 는 같 기 때문에 true 입 니 다.
public class TestString
{
public static void main(String[] args){
String str = "";
System.out.println(str=="");//true
}
}
2. 계속 테스트 하면 다음 결과 도 true 이 고 원인 은 같다.
String str = "abc";
System.out.println(str=="abc");//true
3. 계속 테스트 해 보 세 요. 다음 결 과 는 트 루 입 니 다.이 유 를 자세히 따 져 보면 컴 파일 러 가 컴 파일 할 때 코드 를 최적화 시 켰 기 때 문 일 것 이다. 이런 쓰기 방법 으로 얻 은 바이트 코드 파일 은 위의 것 과 같 아야 한다.
String str = "a" + "bc";
System.out.println(str=="abc");//true
4. 다음 결 과 는 false 입 니 다. 문자열 을 연산 하 였 기 때문에 이때 얻 은 변수 str 는 값 도 "abc"이지 만 메모리 주 소 를 가리 키 는 "abc"이기 때문에 결 과 는 false 입 니 다.
String str = "a";
String str += "bc";
System.out.println(str=="abc");//false
일반적으로 비슷 한 연산 결과 가 빈 문자열 인 경 우 는 나타 나 지 않 으 며, 네 번 째 방법 으로 빈 문자열 인지 아 닌 지 를 직접 판단 할 수 있 을 것 같다.그런데 정말 그런 가요?
5. 상기 테스트 를 계속 하면 일반적으로 우리 가 얻 은 문자열 은 함수 반환 값 입 니 다. 만약 함수 가 빈 문자열 을 return 으로 되 돌려 준다 면.의 형식 으로 되 돌아 가 이등 호 로 판단 하 는 것 은 자연히 가능 하 다.그러나 또 다른 흔히 볼 수 있 는 상황 은 함수 에서 여러 번 수 정 된 문자열 에 대해 StringBuffer 로 작 동 합 니 다.마지막 으로 toString () 으로 문자열 을 되 돌려 줍 니 다. 이때:
StringBuffer sb = new StringBuffer();
//... ...
//假如在一系列操作后,sb仍为空。
System.out.println(sb.toString().length() == 0);//true
System.out.println(sb.toString() == "")//false
StringBuffer 클래스 의 문자열 은 메모 리 를 가리 키 기 때 문 입 니 다.
종합 적 으로 말하자면, 우리 가 명확 하지 않 게 호출 된 함수 내부 에서 실 현 될 때, 빈 문자열 로 판단 하지 않 는 것 이 가장 좋다.
두 번 째 와 세 번 째 방법 을 추천 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Is Eclipse IDE dying?In 2014 the Eclipse IDE is the leading development environment for Java with a market share of approximately 65%. but ac...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.