萌新问题 getChars和toCharArray
本帖最后由 zxq01 于 2020-4-29 16:32 编辑public static void main(String[] args) {
// TODO Auto-generated method stub
String s1=new String( );
char data[ ]={ 'a', 'b', 'c', 'd', 'e', 'f'};
s1=s1.copyValueOf(data);
System.out.println(" s1="+s1);
s1=s1.copyValueOf(data,2,3);
System.out.println(" s1="+s1);
s1.getChars(1,2, data,0);
System.out.println(" data="+data);
data=s1.toCharArray( );
System.out.println(" data="+data);
String s2=new String( );
String s3=new String( );
s2=s1.substring(0);
System.out.println(" s2="+s2);
s3= s1.substring(1,2);
System.out.println(" s3="+s3);
}
结果为什么是s1=abcdef data=[C@18a992fdata=[C@4f1d0d s2=abcdef s3=b 本帖最后由 倒戈卸甲 于 2020-4-24 15:54 编辑
这个要彻底弄清楚,你得阅读打印流的源码,它会把传入的参数转换成字符串再做打印。你可以先记几个结论:全部普通数据类型打印流都重载了对应的成员方法,所以普通数据类型全部可以打印出内容。对于引用数据类型,首先字符串总是会打印内容,因为有其重载形式;其次集合重写了toString方法,也能打印出内容;而如果传入字符数组(只传入数组名这一个变量,不能有拼接之类的操作),因为打印流同样有此重载形式的方法,也能打印内容。但其它类型的数组,因为没有对应的重载形式,只会打印出传入的变量的地址。对于重写了toString方法的对象,会按照重写后的方法来打印,没有则按照默认的toString方法来打印(结果也是打印变量的地址) 我这说的有些啰嗦了,等你学习了java的基类Object,知道所有java对象都会继承其toString方法后,自然会明白其中原理
页:
[1]