>  기사  >  Java  >  if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법

if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법

王林
王林원래의
2019-11-27 11:55:0917242검색

if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법

먼저 ==를 분석하고 사용합니다. (참고: Java에서 =는 할당 연산자이고 ==는 동등성 비교입니다 ) 두 문자열이 같은지 비교하는 equals( ) 메서드:

== 두 문자열의 주소가 같은지(동일한 주소) 비교하고, equals() 메서드는 두 문자의 내용이 같은지 비교합니다. 문자열 객체는 동일합니다(물론 두 문자열이 동일한 주소를 참조하는 경우 equals()를 사용한 비교도 true를 반환합니다).

추천 관련 학습 동영상: java video

다음은 두 가지 상황에서 문자열 비교 문제를 분석하는 두 가지 예를 제공합니다. #🎜 🎜#

예제 1, new 키워드를 사용하여 두 개의 문자열 유형 변수를 선언

if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법

실행 시 프로그램에서 같음과 비교하면 true가 반환되고 ==와 비교하면 false가 반환되는 것으로 나타났습니다. 그 이유는 다음과 같습니다.

Because == 두 문자열 개체의 주소가 동일한지(동일한 주소인지) 비교하여 개체를 생성할 때 해당 개체가 차지합니다. 문자열 llg의 값을 저장하기 위한 별도의 블록입니다. 따라서 두 문자열 s1과 s2가 동일한 값을 가지더라도 저장된 주소는 동일한 주소가 아닙니다.

==를 사용하여 비교할 때 두 문자열의 주소가 같은지 비교하므로 false가 반환됩니다. 하지만 이 두 문자열을 비교하기 위해 equals() 메서드를 사용하면 두 문자열의 값이 같은지 비교하므로 true를 반환합니다.

예제 2, 일반적인 상황에서의 문자열 선언 및 정의

if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법

절차 실행 두 메서드 모두 true를 반환하는 것을 확인합니다. 그렇다면 왜 이런가요? 그 이유는 다음과 같습니다.

일반적으로 우리는 기본 유형 변수와 객체 참조 변수는 스택에 저장되고 new에 의해 생성된 객체와 배열은 힙에 저장된다고 믿습니다. 그런데 이 외에도 상수풀(Constant Pool)이라는 영역이 있다. 우리가 일반적으로 생각하는 것처럼 String s1 = "abc"; 이렇게 선언된 문자열 객체의 값은 상수 풀에 저장됩니다.

을 생성할 때 Java의 하위 계층은 먼저 "abc"가 상수 풀에 존재하는지 검색합니다. 존재하는 경우 s2가 이 값을 가리키도록 하고 이를 다시 생성하지 않습니다. 따라서 ==를 사용하여 비교할 경우 주소가 동일하므로 비교 결과는 true입니다. String s1 = "abc"这样一个对象之后,"abc"就存储到了常量池中,当我们创建引用String s2 = "abc" 

그러면 질문이 돌아옵니다. 상수 풀이 있으므로 문자열이 새롭지 않은 경우(일반적으로 새롭지 않을 것이므로 문자열 변수 선언은 일반적으로 예제 2와 같이 작성됩니다.) ), 이 문자열은 모두 상수 풀의 동일한 객체를 참조하므로 비교를 위해 ==를 사용합니까? 대답은 '예'입니다.

추천 관련 기사 및 튜토리얼:

java 입문 학습

위 내용은 if 문을 사용하여 Java에서 문자열이 같은지 확인하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.