관계 연산자 "=="는 정확히 무엇을 비교하나요?
다음 문장은 "Java 프로그래밍 사고"라는 책에서 발췌한 것입니다. "관계 연산자는 부울 결과를 생성하고 피연산자의 값을 계산합니다. 관계".
이 문장은 간단해 보이지만 주의 깊게 이해해야 합니다. 간단히 말하면 ==는 값이 같은지 비교하는 데 사용됩니다.
몇 가지 예를 살펴보겠습니다.
public class Main { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub int n=3; int m=3; System.out.println(n==m); String str = new String("hello"); String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1==str2); str1 = str; str2 = str; System.out.println(str1==str2); } }
출력 결과는 다음과 같습니다.
true false true# 🎜🎜#n==m 결과는 true입니다. 이는 이해하기 쉽습니다. 변수 n과 변수 m에 저장된 값은 모두 3이므로 동일해야 합니다. 그리고 str1과 str2의 두 비교 결과가 다른 이유는 무엇입니까? 이를 이해하려면 기본 데이터 유형 변수와 기본이 아닌 데이터 유형 변수의 차이점을 이해하면 됩니다.
int n=3;
int m=3;
변수 n과 변수 m 모두 값 "3"을 직접 저장하므로 ==와 비교하면 결과가 true입니다.
기본이 아닌 데이터 유형의 변수를 일부 책에서는 참조 유형 변수라고 합니다. 예를 들어, 위의 str1은 참조 유형 변수입니다. 참조 유형 변수는 "값" 자체가 아니라 메모리에 연관된 개체의 주소를 저장합니다.
예를 들어 다음 코드 줄은 다음과 같습니다.String str1;
이 문장은 참조 유형 변수를 선언합니다. 이번엔 협회다.
str1= new String("hello");
그러면 str1은 객체를 가리킵니다(str1은 여러 곳에서 객체에 대한 참조라고도 합니다). 이때 변수 str1은 "값"이 아닌 자신이 가리키는 객체의 저장 주소를 메모리에 저장합니다. 즉, 직접 저장된 문자열 "hello"가 아닙니다. 여기의 참조는 C/C++의 포인터와 매우 유사합니다.
따라서 ==를 사용하여 처음으로 str1과 str2를 비교하면 결과는 false입니다. 따라서 각각 다른 객체를 가리키며, 이는 실제로 저장되는 메모리 주소가 다르다는 것을 의미합니다.
두 번째 비교에서 str1과 str2는 모두 str이 가리키는 객체를 가리키므로 결과는 의심할 여지 없이 참입니다.
위 내용은 ==는 Java에서 무엇을 의미합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!