为什么聊天会在与整数连接时消失

时间:2014-05-14 15:57:23

标签: java string char operator-overloading long-integer

我们今天的日志记录发生了奇怪的事情。 Printed是由逗号分隔的整数和长整数列表,如下面的代码:

public class Main {

    public static void main(String[] args) throws InterruptedException {
        long l = 10;
        System.out.println(l + ';' + "text");
    }
}

问题在于;从输出中消失了。

1 个答案:

答案 0 :(得分:0)

这里的问题是由+运算符的过载引起的。它在操作String和long时以一种方式起作用,而在操作char和long时以另一种方式起作用。当其中一个操作数是一个字符串时,如果它不是一个字符串,它会尝试将另一个操作数强制转换为字符串,然后将它们连接起来。

但是当运算符是数字时,如int和long,+运算符作为普通的数学加运算符。因为char是一个数字而没有别的,';' + l被视为数值运算,因此问题中代码的输出是69text而不是10; text。