【发布时间】:2022-01-07 07:12:22
【问题描述】:
我有一个 Person 对象。如果我尝试将此对象连同对 Integer 包装类的引用一起传递给“+”运算符,则会收到错误消息,因为它们不是相同的数据类型。但是如果我有一个 String 和一个 StringBuilder 引用。每个引用都指向一个有效值,我将它传递给 + 运算符,它打印连接的值。我的问题是不是 String 和 StringBuilder 2 不同的类? (就像 Person 和 Integer),为什么在这种情况下我没有收到编译器错误?
public static void main(String[] args) {
Double d1=new Double(23);
Integer i1=new Integer(5);
// System.out.println(new Pers()+d1);//compiler error
System.out.println(new StringBuilder("abc")+ new String("zyz"));
}
}
我正在努力理解语言中发生的这些奇怪的事情,并希望成为一名更好的程序员。任何帮助表示赞赏。谢谢!
【问题讨论】:
-
你希望 new Pers() + d1 得到什么结果; ?
-
因为字符串连接运算符是一个东西:docs.oracle.com/javase/specs/jls/se8/html/… - 但你不能只将任何东西传递给
+。顺便说一句:你确定你可以+StringBuilders吗? -
另外,考虑“3.0 + 4”(浮点数和整数)
-
@Stultuske 在问题中提到 new Pers() +d1 结果编译器错误
-
@Anil 不,这是实际结果,也是合乎逻辑的结果。你期待的是什么?
标签: java string class object operators