今天的内容:
Java中当使用Println一段字符串和字符数组时,字符数组会出现乱码(可能是地址)这种现象是println()方法重载的原因.
public class t { public static void main(String[] args) { char[] a = new char[10]; StringBuilder strb = new StringBuilder("Hello, World!"); a = strb.toString().toCharArray(); System.out.println(""+a); } }
/* 输出: [C@279f2327 */
如果使用Arrays.toString方法:
import java.util.Arrays; public class t { public static void main(String[] args) { char[] a = new char[10]; StringBuilder strb = new StringBuilder("Hello,World!"); a = strb.toString().toCharArray(); System.out.println(""+Arrays.toString(a));
// System.out.println(""+a.toString());此句的输出同上,也故不考虑这种方法
}
}
//输出:[H, e, l, l, o, ,, W, o, r, l, d, !]
解决方法:
1. 使用String类的valueOf()方法:
public class t { public static void main(String[] args) { char[] a = new char[20]; StringBuilder strb = new StringBuilder("Hello, World!"); a = strb.toString().toCharArray();//如果字符串的长度超过了char数组的长度,则会自动增加字符数组长度 System.out.println(""+String.valueOf(a)); } }
//输出:Hello, World!
2. 直接使用String替换char[].
3. 使用char[]去初始化一个String
4.只输出一个字符字符数组(不算是方法)
import java.util.Arrays; public class t { public static void main(String[] args) { char[] a = new char[10]; StringBuilder strb = new StringBuilder("Hello,World!"); a = strb.toString().toCharArray(); System.out.println(a); } }
明天的打算: 继续写实验题
问题: 如上,已解决