>  기사  >  Java에서 프리미티브에 .equals 메소드가 필요하지 않은 이유는 무엇입니까?

Java에서 프리미티브에 .equals 메소드가 필요하지 않은 이유는 무엇입니까?

PHPz
PHPz앞으로
2024-02-08 23:18:21521검색

Java에서 원시(원시 데이터 유형)는 int, double, char 등과 같은 Java 언어의 기본 데이터 유형을 나타냅니다. 반면에 String, Object 등과 같은 참조 데이터 유형이 있습니다. 참조 데이터 유형과 달리 기본 유형은 .equals() 메서드를 사용하여 비교할 필요가 없습니다. 이는 기본 유형 변수가 객체 참조가 아닌 실제 값을 저장하기 때문입니다. 따라서 두 개의 원시형 변수를 비교할 때 값 자체가 같은지 비교하기 때문에 == 연산자를 직접 사용하여 비교할 수 있습니다. 참조 데이터 유형의 경우 객체 참조가 동일한 객체를 가리키는지 여부를 비교하기 때문에 .equals() 메서드를 사용해야 합니다. 이것이 Java에서 기본 유형에 .equals() 메소드가 필요하지 않은 이유입니다.

질문 내용

그래서 Java에서는 문자열을 비교하는 경우 .equals 메서드를 사용해야 합니다. ==는 내용이 아닌 메모리 주소만 비교하기 때문입니다. 괜찮아요. 이해해요. 그러나 내가 이해하지 못하는 것은 왜 원본에는 동일한 문제가 없는가입니다. 기본 요소에 == 연산자를 어떻게 사용할 수 있습니까?

해결 방법

이는 기본 요소가 전체 Java 개체가 아니므로 "값으로 전달"되는 반면 개체는 "참조로 전달"된다는 사실로 귀결됩니다.

또한 .equals() 함수는 클래스에서 완전히 인스턴스화된 Java 개체가 아니고 클래스/객체에 함수를 정의해야 하기 때문에 기본 요소에서 사용할 수 없습니다.

대부분의 프리미티브는 동등한 객체 유형을 갖습니다. 예를 들어 Integerint의 완전히 구현된 객체 유형입니다. 현대 Java에서는 오토박싱Integerint 的完整实现对象类型,在现代 Java 中,您会得到名为 自动装箱。所以如果你不使用int,而是使用Integer类型,那么你可以调用.equals(). 따라서 int를 사용하지 않고 Integer 유형을 사용하는 경우

를 호출할 수 있습니다. Java의 문자열

은 약간 특별하지만 기본적으로 불변 객체입니다.

이 정보는 무작위로 분류되어 있지만 이를 추가하면 무슨 일이 일어나고 있는지 알 수 있을 것이라고 믿습니다. 🎜

위 내용은 Java에서 프리미티브에 .equals 메소드가 필요하지 않은 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 stackoverflow.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제