很多人在编程的时候,总喜欢用下面的方法把数组转换成字符串:(A是字节数组)
string s = a . tostring();
但是每次返回,新手返回的结果好像都是乱码。比如我写RSA算法的时候没注意,以为是乱码(哈哈哈),其实[B@1b6d3586就是栈地址值。这个时候你要知道,在返回一个String对象的时候,新的基本上是不会错的。测试代码如下:
Scanner scan=new Scanner(System.in); String s="ghhhh"; byte[]a=s.getBytes(); String s1=a.toString(); String s2=new String(a); System.out.println("s1:"+s1); System.out.println("s2:"+s2);
测试结果:
1 s1:[B@1b6d35862 s2:ghhhh
可以看出,s1对应的方法只返回字节数组的地址值,而s2真正返回的是a的实体值。
这是因为,String Java . lang . object . tostring()返回的确实是地址值,介绍如下:
返回对象的字符串表示形式。通常,toString方法返回一个字符串,该字符串“文字上代表”这个物体。结果应该是一个简洁但信息丰富的表示,易于阅读。建议所有子类都重写此方法。
类对象的toString方法返回一个字符串,该字符串由该对象是其实例的类的名称、at符号字符` @ ’,以及对象的哈希代码的无符号十六进制表示形式。换句话说,此方法返回一个等于以下值的字符串:
getClass()。getName()+‘@’+ Integer.toHexString(hashCode())
通常,class Object的toString方法返回一个字符串,它由对象是实例的类的名称、符号“@”和对象哈希代码的无符号十六进制表示组成。换句话说,这个方法返回一个字符串。
本文来自水洗晴空投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/527530.html