JAVA中, String = "a" + "b" + "c"; 请问一个生成了几个对象?

在Java中,String是一个不可变对象,也就是说一旦创建了一个String对象,它的值就不能被改变。那么,当我们使用String s = "a" + "b" + "c";这样的语句时,到底会创建多少个对象呢?

首先,让我们来分析上面的语句。当我们使用"+"连接字符串"ab"和"c"时,实际上会创建一个新的String对象"abc"。这是因为在Java中,字符串的连接操作会被编译器优化成使用StringBuilder来实现,然后通过toString()方法将Builder对象转化为String对象。

因此,当我们执行String s = "a" + "b" + "c";这条语句时,实际上会创建两个String对象。第一个对象是"ab",第二个对象是"abc"。而"ab"对象在Java中会被JVM优化成一个String常量,因此在运行时只会有一个"ab"对象。而"abc"对象则是在运行时才被创建出来的。

所以,总结起来,当我们执行String s = "a" + "b" + "c";这条语句时,实际上会创建两个对象。一个是"ab"的String常量对象,另一个是"abc"的String对象。

需要注意的是,如果我们使用String s = "a"; s = s + "b" + "c";这样的语句,由于s是可变的,所以会创建3个对象。因为在这种情况下,每次进行字符串连接操作时都会创建一个新的String对象。这也是为什么在实际开发中建议使用StringBuilder或StringBuffer来进行频繁的字符串拼接操作,以提高性能的原因。

标签:游戏攻略