> Java > Java베이스 > Java의 문자열 신원 판단

Java의 문자열 신원 판단

王林
풀어 주다: 2019-11-29 15:29:28
앞으로
2436명이 탐색했습니다.

符1. 이유 : String Heng 외 심사위원

Java의 문자열 신원 판단

//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);
 
    }
}
로그인 후 복사
n==m 결과는 true, 이해하기 쉽습니다. 변수 n과 변수 m에 저장된 값은 모두 3이므로 동일해야 합니다. 그리고 str1과 str2의 두 비교 결과가 다른 이유는 무엇입니까? 이를 이해하려면 기본 데이터 유형 변수와 기본이 아닌 데이터 유형 변수의 차이점을 이해하면 됩니다. 8 Java의 기본 데이터 유형

부동 소수점 유형: float, double; 정수 유형: byte, short, int, long 문자 유형: 부울 유형;

이 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));
 
    }
}
로그인 후 복사
String 클래스는 equals 메소드를 재정의하여 저장된 값을 비교합니다. 문자열이 동일한지 여부. Double, Date, Integer 등과 같은 일부 다른 클래스는 가리키는 객체에 저장된 내용이 동일한지 비교하기 위해 equals 메서드를 재정의했습니다.

요약:

For ==: 기본 데이터 유형의 변수에 작용하는 경우 저장된 "값"이 동일한지 직접 비교하고, 참조 유형의 변수에 작용하는 경우 Address

equals 메서드의 경우: equals 메서드가 재정의되지 않은 경우 String 및 Date와 같은 클래스가 equals 메서드를 재정의하면 참조 유형 변수가 가리키는 개체의 주소가 비교됩니다. is of all 가리키는 객체의 내용입니다(equals 메소드는 기본 데이터 유형의 변수에 대해 작동할 수 없습니다).

더 많은 관련 기사와 튜토리얼을 보려면 다음을 방문하세요.

Java 시작하기

위 내용은 Java의 문자열 신원 판단의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:csdn.net
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿