gpt4 book ai didi

java - 为什么 new StringBuffer(new StringBuilder ("foo")) 有效?

转载 作者:行者123 更新时间:2023-12-01 06:55:46 25 4
gpt4 key购买 nike

我正在学习 SCJP 证书,在使用 StringBuilder 和 StringBuffer API 时,我发现了一些我无法理解其中发生的情况的情况。

这是我的示例代码:

    StringBuffer sb1 = new StringBuffer("sb1");
StringBuilder sb2 = new StringBuilder("sb2");

StringBuffer sb11 = new StringBuffer(sb1);
StringBuilder sb22 = new StringBuilder(sb2);

StringBuffer sb12 = new StringBuffer(sb2);
StringBuilder sb21 = new StringBuilder(sb1);

System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb11);
System.out.println(sb22);
System.out.println(sb12);
System.out.println(sb21);

System.out.println();
sb1.append("a1");
sb2.append("a2");

System.out.println(sb1);
System.out.println(sb2);
System.out.println(sb11);
System.out.println(sb22);
System.out.println(sb12);
System.out.println(sb21);

这是运行上面代码的结果:

sb1
sb2
sb1
sb2
sb2
sb1

sb1a1
sb2a2
sb1
sb2
sb2
sb1

API 中未记录用于 sb11、sb22、sb12 和 sb21 的构造函数。此外,从结果来看,这 4 种情况似乎使用了接受 String 或 CharSequence 的构造函数。

如果是真的,为什么Java会自动将StringBuffer转换为String?据我所知,自动装箱并没有走那么远。

我错过了什么?

最佳答案

StringBuilderStringBuffer 都实现了 CharSequence 接口(interface),并且都有一个采用 CharSequence 参数的构造函数.

关于java - 为什么 new StringBuffer(new StringBuilder ("foo")) 有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12533418/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com