我正在尝试了解以下程序输出的原因。
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 + 267应 534 。但是在这里,第一个sysout的输出是267267。
第二个sysout,hexadecimalValue 0X10B首先转换为十进制,输出267.并且,binValue转换为十进制,输出267.现在267 + 267应该 534 ,但它不是真的,它显示267267。
它像字符串连接一样工作。我怎么能理解这个?
答案 0 :(得分:4)
使用如下
System.out.println("Decimal plus octal = "+ (decimal+octalValue));
System.out.println("HexaDecimal plus binary = "+ (hexadecimalValue+binValue));
"Decimal plus octal = "+ decimal+octalValue
被处理为String("Decimal plus octal = ")+ String(deimal)+String(octalValue)
因此问题。
您更喜欢String("Decimal plus octal = ")+ String(deimal + octalValue)
答案 1 :(得分:3)
Java从左到右开始操作,所以它将首先使用字符串附加十进制,这将是“Decimal plus octal = 267”,然后在其上添加octalValue,这样输出将变为 “十进制加八进制= 267267”