이 specification은 숫자 프로모션을 Java로 문서화합니다. 섹션 2에서 두 피연산자 중 하나가 double
유형이면 결과는 double 유형이라고합니다. (@Januson으로 첨가)이 specification, 그것은 설명한에서 해당 :
조건식의 종류
지금, 만일 제 AND 번째 오퍼랜드의 촉진 타입 이 두 문서를 예제에 적용하면 다음과 같이 표시됩니다.
System.out.println(System.getProperty("java.version"));
Java의 버전 (릴리스)입니다. String
입니다.
System.out.println((true) ? (int)2.5 : 3.5);
이 경우 컴파일러는 조건부의 두 부분을보고 데이터 유형을 결정합니다. (int) 2.5는 integer
이고 3.5는 double
입니다. 결과는 double
이됩니다. 따라서 정수 부분 2.5 (즉, 2)는 double
으로 캐스팅됩니다. 결과는 integer
그래서이 경우
System.out.println((true) ? (int)2.5 : 3);
컴파일러 2 개 정수 보인다. 첫 번째 경우는
integer
이고 두 번째 경우는
integer
이므로 결과는
integer
입니다. 이 경우
System.out.println((true) ? (int)2.5 + "" : 3.5);
그것이
String
되고, 컴파일러는 첫 번째 경우에 보이는이 번호 문자열에 첨부되어 있기 때문에, 이제 2이다 정수부 걸린다. 결과는 문자열이 될 것입니다. 3.5를 반환하려고하면
double
이 아닌
String
으로 반환됩니다.