이 두 진술 사이에 차이가 있습니까?
-
06-07-2019 - |
문제
float ff = 1.2f;
Float fo = new Float(1.2f);
double fg = 3.2d;
Double fh = new Double(2.1d);
(1)과 (3) 사이 또는 (2)와 (4) 사이에 '='를 사용할 수 있습니까?
해결책
예.
- "float"라는 일반 기존 데이터 유형 (일명 원시 유형)을 만듭니다.
- (1)과 동일하게 발생하는 그 값을 보유하는 float라는 Java 객체를 만듭니다.
편집 질문에 응답 :
당신은 볼 것입니다
- "정밀도 손실"메시지를 시도하는 경우
ff = fg
. - 시도하면 "호환되지 않는 유형"
fo = fh
. fg = ff
잘 작동합니다 (플로트는 두 배로 맞습니다).fh = fo
여전히 "호환되지 않는 유형"을 줄 것입니다.
다른 팁
예, 2는 객체를 만듭니다.
예, 첫 번째는 원시 유형이고 두 번째는 원시 플로트 유형의 기능을 감싸는 권투 클래스입니다. 예를 들어 컬렉션에 사용하려면 두 번째가 필요합니다. 유형 변환을 많이 다루기 전에 (Java 1.5까지 생각합니다) 이제 랩퍼 클래스의 존재는 이러한 기능을 취합니다. 추가 정보. 여기
예. 첫 번째는 원시 유형의 변수를 선언합니다 float
1.2로 초기화합니다.
두 번째는 참조 유형의 변수를 선언하지만 Float
, 유형의 객체를 만듭니다 Float
그런 다음 변수에 대한 참조를 할당합니다.
New Float (1.2f)는 a 새로운 메모리를 소비하는 매번 물체를 떠 다니십시오.
공장 방법을 사용하는 경우 float.valueof (1.2f) JVM은 기존 플로트 오브젝트 인스턴스를 동일한 값으로 재사용 할 수 있습니다. 값이 동일한 플로트 인스턴스가없는 경우에만 새 개체 인스턴스를 만들 수 있습니다.
일반적으로 새 float (1.2f) 대신 float.Valueof (1.2f)를 사용하려고합니다.
또한 원시와 객체는 동등한 연산자와 다르게 작동합니다. ==.
float x1 = 1.2f;
float x2 = 1.2f;
x1 == x2 // true
Float f1 = new Float(1.2f);
Float f2 = new Float(1.2f);
f1 == f2 // false
예, 원시 유형은 무효가 될 수 없습니다. 물체는 할 수 있습니다. 또한 플로트 객체에는 유용한 유틸리티 기능이 첨부되어 있습니다.
이 선언을 사용하면 원시 유형 플로트가 있고 값을 할당했습니다. Primitive 유형은 다른 데이터 유형으로 구성된 데이터 유형이며 분리 할 수는 없습니다 (간단히 설명하기 위해). 원시는 일반적으로 내장 유형입니다.
이 경우 객체를 생성했으며 내부적으로는 더 작은 데이터 유형으로 구성되며 메소드도 포함되어 있습니다.
원시 유형 플로트와 객체 유형의 주요 차이점은 원시는 단순히 데이터의 형식이며 속성이나 방법이 없습니다.
3 = 1은 잘 작동하며 휴식은 그렇지 않습니다.
실제 응용 프로그램에서는 플로트 나 플로트를 사용하지 않는 것이 좋습니다. 정확하지 않으며 올바른 솔루션은 거의 없으며 대신 더블 또는 더블을 사용합니다.