在Java中,当我们使用`char[]`数组来尝试打印其内容时,实际上输出的是字符数组的引用地址,而非实际的字符串值。下面是对这个现象的一个直观解释:当你在程序中调用`Char2String.char2String(char[] c)`方法时,它会创建一个名为`StringBuffer`的对象,通过循环遍历字符数组`c`中的每个字符,将其逐个添加到`StringBuffer`中。然而,`System.out.println(sb)`这一行输出的是`StringBuffer`对象的引用,而非实际构造的字符串。这意味着你看到的是字符数组在内存中的位置,而不是它转换为字符串后的实际内容。例如,当你用`char[] c = {'1','2','3','4','5','a','c','e'}`调用这个方法,输出的将是`StringBuffer`对象的地址,而不是字符串"12345ace"。如果你需要得到实际的字符串,你需要调用`sb.toString()`方法,将`StringBuffer`转换为`String`类型。