StringBuilder构造函数接受StringBuilder对象 - 为什么?

时间:2016-08-14 15:53:36

标签: java constructor stringbuilder

StringBuilder定义了四个构造函数,但没有一个接受StringBuilder,但以下编译:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

这是否意味着编译器在内部以某种方式将匿名StringBuilder对象转换为String?

2 个答案:

答案 0 :(得分:9)

StringBuilderCharSequence(它实现了该接口)和there is a constructor taking a CharSequence。这就是给定代码编译的原因:

StringBuilder sb = new StringBuilder(new StringBuilder("Hello"));

此构造函数所做的只是使用给定StringBuilder的内容初始化新CharSequence。结果与

相同
StringBuilder sb = new StringBuilder("Hello");

答案 1 :(得分:5)

有一个构造函数接受CharSequence,它是一个由StringBuilder和String(以及其他类)实现的接口。

http://docs.oracle.com/javase/8/docs/api/java/lang/CharSequence.html