자바에서 평등과 ==의 차이
Java의 데이터 유형은 두 가지 범주로 나눌 수 있습니다.
1. 기본 데이터 유형, 원시 데이터 유형이라고도합니다. 바이트, 짧은, 문자, int, 길고, 플로트, 이중, 부울
이중 부호 (==)를 적용하는 그들 사이의 비교는 그 값과 비교됩니다.
2. 컴포운드 데이터 유형 (클래스)
그들이 (==)와 비교할 때 메모리에서 스토리지 주소를 비교합니다. 따라서 동일한 새로 얻은 개체가 아니라면 비교 후 결과는 사실입니다. 그렇지 않으면 비교 후 결과는 False입니다. Java의 모든 클래스는 기본 클래스 객체에서 상속합니다. 평등 방법은 객체의 기본 클래스에 정의됩니다. 이 방법의 초기 동작은 비교 객체의 메모리 주소이지만 일부 클래스 라이브러리에서는이 메소드가 덮어 씁니다. 예를 들어, 문자열, 정수 및 날짜는이 클래스에서 자체 구현을 가지고 있으며 더 이상 힙 메모리에서 비교 클래스의 저장 주소가 아닙니다.
Composite 데이터 유형 간의 평등 비교의 경우, Equals 메소드를 덮어 쓰지 않고 비교는 메모리에서 스토리지 위치의 주소 값을 기반으로합니다. 객체의 동등한 방법은 또한 이중 동일 부호 (==)와 비교되므로 비교 후 결과는 이중 동일 부호 (==)의 결과와 동일합니다.
Java의 차이는 =, ==입니다
1. ==와 동일의 차이
1. ==는 연산자입니다
2. Equals는 문자열 객체의 메소드입니다
일반적으로 두 가지 유형의 비교가 있습니다
1. 기본 데이터 유형 비교
2. 기준 객체 비교
1. 기본 데이터 유형 비교
== 그리고 동등한 값이 값이 같고, 동일하면, 그렇지 않으면, 그렇지 않으면 false입니다.
2. 기준 객체 비교
== 그리고 그에 따라 스택 메모리의 주소가 동일한지 여부와 비교됩니다. 동일하다면, 그것은 사실입니다. 그렇지 않으면 거짓입니다.
알아채다:
1. 문자열은 특별한 참조 데이터 유형입니다. == 문자열 객체의 참조 주소가 동일인지 비교하고 스택의 내용이 일관된 지 비교합니다.
문자열 ss = 새 문자열 ( "abc"); 문자열 sss = new String ( "ABC"); if (ss == sss) {system.out.println ( "ss == sss는 true"); } if (ss.equals (sss)) {system.out.println ( "ss equals sss is true"); }콘솔 출력 :
ss! = sss
SS는 SSS와 같습니다
스택에서 SS 및 SS의 메모리 주소가 다르지만 힙의 내용은 동일하다는 것을 나타냅니다.
문자열 ss = 새 문자열 ( "abc");
문자열 ssss = ss;
// 스택에서 SS 및 SSS의 참조 주소가 동일하지만 (SS == SSSS) {System.out.println ( "SS == SSSS"); } else {system.out.println ( "ss! = ssss"); } // 힙에있는 SS 및 SSS의 내용이 (ss.equals (ssss)) {System.out.println ( "ss sss sss")인지 판단합니다. } else {system.out.println ( "ss는 ssss와 동일하지 않음"); }콘솔 출력 :
SS == SSSS
SS는 SSS와 같습니다
이것은 SS와 SSS가 동일한 개체이고 힙에 동일한 내용이 있음을 보여줍니다.
2. 기준 객체 비교
testbean obj1 = new testbean (); testbean obj2 = new testbean (); testbean obj3 = obj1; if (obj1 == obj2) {system.out.println ( "obj1 == obj2"); } else {system.out.println ( "obj1! = obj2"); } if (obj1 == obj3) {system.out.println ( "obj1 == obj3"); } else {system.out.println ( "obj1! = obj3"); }콘솔 출력 :
obj1! = obj2
OBJ1 == OBJ3
그것은 OBJ1과 OBJ2가 동일한 객체가 아니며 스택의 참조 주소가 다르다는 것을 의미합니다.
OBJ1과 OBJ3은 동일한 객체이며 스택의 참조 주소는 동일합니다.
2. =와 같은 ==의 차이
=는 할당을 나타냅니다. 즉, 오른쪽의 값을 왼쪽의 변수에 할당합니다. 평등하고 ==는 작업입니다
읽어 주셔서 감사합니다. 도움이되기를 바랍니다. 이 사이트를 지원 해주셔서 감사합니다!