符1. 이유 : String Heng 외 심사위원
//String is reference type String str1 = new String("hello"); String str2 = new String("hello"); System.out.println(str1==str2); // false System.out.println(str1.equals(str2)); // true
온라인 학습 영상 공유 : java 온라인 학습
2. 관계 연산자 "==" 포인트: "=="만 처리할 수 있습니다. 참조 데이터형이 아닌 기본 데이터형에 해당하는 값에 대한 동일성 판단(값은 주소에 저장됨)
public class Main { public static void main(String[] args) { int n=3; int m=3; // true System.out.println(n==m); String str = new String("hello"); String str1 = new String("hello"); String str2 = new String("hello"); // false System.out.println(str1==str2); str1 = str; str2 = str; // true System.out.println(str1==str2); } }
이 8가지 기본 데이터 유형의 변수는 변수에 "값"이 직접 저장되므로 관계 연산자 ==를 사용하여 비교할 때 "값" 자체가 비교됩니다. 부동 소수점 및 정수 유형은 부호 있는 유형이고 char은 부호 없는 유형입니다.
String 유형과 같은 기본이 아닌 데이터 유형(참조 유형)의 변수는 참조 유형 변수가 저장되지 않습니다. "값" 자체가 아니라 이와 관련된 개체의 메모리에 있는 주소입니다. 예를 들어 str1은 직접 저장된 문자열 "hello"가 아니라 객체에 해당하는 주소입니다.그래서 ==를 사용하여 처음으로 str1과 str2를 비교하면 결과는 false입니다. 그들은 각각 다른 객체를 가리키기 때문에, 즉 실제로 저장되는 메모리 주소가 다릅니다. 두 번째 비교에서는 str1과 str2가 동시에 str이 가리키는 객체를 가리키므로 결과는 의심할 여지 없이 참입니다(주소는 동일함).
3. 객체 메서드 “equals()”
equals 메서드는 기본 클래스 Object의 메서드이므로 Object를 상속하는 모든 클래스에는 이 메서드가 있습니다. Object 클래스에서는 두 객체의 참조가 동일한지, 즉 동일한 객체를 가리키는지 비교하는 데 equals 메소드가 사용됩니다.
public class Main { public static void main(String[] args) { String str1 = new String("hello"); String str2 = new String("hello"); // true System.out.println(str1.equals(str2)); } }
요약:
For ==: 기본 데이터 유형의 변수에 작용하는 경우 저장된 "값"이 동일한지 직접 비교하고, 참조 유형의 변수에 작용하는 경우 Address
equals 메서드의 경우: equals 메서드가 재정의되지 않은 경우 String 및 Date와 같은 클래스가 equals 메서드를 재정의하면 참조 유형 변수가 가리키는 개체의 주소가 비교됩니다. is of all 가리키는 객체의 내용입니다(equals 메소드는 기본 데이터 유형의 변수에 대해 작동할 수 없습니다). 더 많은 관련 기사와 튜토리얼을 보려면 다음을 방문하세요.Java 시작하기
위 내용은 Java의 문자열 신원 판단의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!