아래 프로그램의 출력 이유를 이해하려고합니다.이진수로 16 진수 추가
public class CrossAddition{
public static void main(String[] args){
int decimal = 267;
int octalValue = 0413;
int hexadecimalValue = 0X10B;
int binValue = 0b100001011;
System.out.println("Decimal plus octal = "+ decimal+octalValue);//267267
System.out.println("HexaDecimal plus binary = "+ hexadecimalValue+binValue);//267267
}
}
여기서이 문제 제 SYSOUT에서 octalValue 내 분석 즉 ..는 octalVlaue 0413의 십진수 267 + 267 534되어야하기 (267)이고, 소수점으로 변환된다. 하지만 여기에서 첫 번째 sysout의 출력은 267267입니다.
두 번째 sysout, hexadecimalValue 0X10B는 먼저 267을 출력하는 십진수로 변환됩니다. 그리고 binValue는 267을 출력하는 십진수로 변환됩니다. 다시 267 + 267이되어야합니다. 하지만 실제로는 그렇지 않습니다. 표시되는 숫자는 267267입니다.
문자열 연결과 비슷합니다. 어떻게 이것을 이해할 수 있습니까?
System.out.println("Decimal plus octal = "+ (decimal+octalValue));
System.out.println("HexaDecimal plus binary = "+ (hexadecimalValue+binValue));
"Decimal plus octal = "+ decimal+octalValue
다음과 같은
왼쪽에서 오른쪽으로 '+'가 해석됩니다. 다른 컨텍스트에서 오른쪽 '+'는 숫자 추가를 발생시킵니다.이 경우 왼쪽 피연산자는 이미 문자열이므로 문자열에 추가됩니다. –