&引用+&引用;Java与Python中的运算符

&引用+&引用;Java与Python中的运算符,java,python,string,Java,Python,String,有人能解释一下为什么Java在下面的例子中连接字符串和整数吗 public class main { public static void main(String[] args) { System.out.println("test" + 5); System.out.println(5 + "5"); } } 与Python实现的+操作符有什么区别 在Python中,这会引发TypeError: "5" + 5 简单地说,在Java中,+

有人能解释一下为什么Java在下面的例子中连接字符串和整数吗

public class main {

    public static void main(String[] args) {
        System.out.println("test" + 5);
        System.out.println(5 + "5");
    }

}
与Python实现的
+
操作符有什么区别

在Python中,这会引发
TypeError

"5" + 5

简单地说,在Java中,
+
操作符重载字符串。Python显然没有实现这种覆盖,因此您需要找出Python的连接运算符是什么,以使后一种情况起作用。

简单地说,在Java中,
+
运算符对字符串重载。Python显然没有实现这种覆盖,因此您需要找出Python的串联运算符是什么,以使后一种情况能够工作。

是什么让您认为
+
对于两种不同的语言应该以相同的方式工作?在Java中,当您有

System.out.println(5 + "5");
Python规范中对此进行了概述(请参阅)。没有通用的规则规定
+
必须以特定的方式跨语言运行:如果我愿意,我可以创建一种
+
执行减法运算的语言

作为@Wooble,Perl的
+
以另一种方式运行:


是什么让你认为对于两种不同的语言,
+
应该以相同的方式工作?在Java中,当您有

System.out.println(5 + "5");
Python规范中对此进行了概述(请参阅)。没有通用的规则规定
+
必须以特定的方式跨语言运行:如果我愿意,我可以创建一种
+
执行减法运算的语言

作为@Wooble,Perl的
+
以另一种方式运行:


你会得到一个TypeError,因为“5”是string类型,而5是int类型。就像有人说的,它就是这样设计的。我猜的部分原因是为了避免混淆。你想让“5”+5等于10还是55

如果需要,可以通过将int转换为字符串来实现

'5' + str(5)

你会得到一个TypeError,因为“5”是string类型,而5是int类型。就像有人说的,它就是这样设计的。我猜的部分原因是为了避免混淆。你想让“5”+5等于10还是55

如果需要,可以通过将int转换为字符串来实现

'5' + str(5)
如果你查一下

Java语言为字符串连接运算符(+)以及其他对象到字符串的转换提供了特殊支持。字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的

因此,如果您检查,它是特定于java的

Java语言为字符串连接运算符(+)以及其他对象到字符串的转换提供了特殊支持。字符串连接是通过StringBuilder(或StringBuffer)类及其append方法实现的


因此,它是特定于java的

基本上在Python中,您必须执行以下操作:

"5" + str(5)

因为,尽管Python和Java中的字符串对都重写运算符+,但Python中的字符串和整数没有适当的重写,需要时整数不会隐式转换为字符串。因此,您需要显式地将5强制转换为字符串,以便在连接的两侧都有字符串。

基本上在Python中,您必须执行以下操作:

"5" + str(5)

因为,尽管Python和Java中的字符串对都重写运算符+,但Python中的字符串和整数没有适当的重写,需要时整数不会隐式转换为字符串。因此,您需要显式地将5强制转换为字符串,以便在连接的两侧都有字符串。

编译器java在内部将5+“5”转换为StringBuilder,并使用.append(int)将整数“添加”到字符串。

编译器java在内部将5+“5”转换为StringBuilder,并使用.append(int)将整数“添加”到字符串中字符串的整数。

在java中,如果a+b中有字符串类型,则+将进行串联,而在python中,默认情况下未定义两种不同类型的+。因此,正如所建议的,在python中,在连接之前需要执行str(Int)。

在java中,如果a+b中有字符串类型,那么+将执行连接,而在python中,默认情况下没有定义两种不同类型的+。因此,正如所建议的,在python中,在连接之前需要执行str(Int)。

因为语言就是这样设计的。与Java方面相关:如果在Perl中尝试并获得10,您会更加困惑。这个问题是如何“主要基于观点”的?因为语言就是这样设计的。与Java方面相关:如果你在Perl中尝试并得到10,你会更加困惑。这个问题是如何“主要基于观点”的?它是在python中:
面对歧义,拒绝猜测的诱惑。
它是在python中:
面对歧义,拒绝猜测的诱惑。