很多人在编程时,总是喜欢用一下方法将数组转为字符串:(a为byte数组)

    String s=a.toString();

可是每次返回的时候,新手看来返回的结果是乱码,比如说我,写RSA算法时,没有注意,就以为是解密出来的乱码(哈哈哈),但其实[B@1b6d3586 为@+hash值,这个时候要知道对于返回一个String对象,new一个是基本上不会错的,测试代码如下:

         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);

测试结果:

 s1:[B@1b6d3586
s2:ghhhh

可以看到s1所对应的方法只是返回hash值,而s2才真正返回了a的实体值。

这是因为,String java.lang.Object.toString()返回的确实是hash值,介绍如下:

Returns a string representation of the object. In general, the toString method returns a string that "textually represents" this object. The result should be a concise but informative representation that is easy for a person to read. It is recommended that all subclasses override this method.

The toString method for class Object returns a string consisting of the name of the class of which the object is an instance, the at-sign character `@', and the unsigned hexadecimal representation of the hash code of the object. In other words, this method returns a string equal to the value of:

 getClass().getName() + '@' + Integer.toHexString(hashCode())

大体意思就是类Object的toString方法返回一个字符串,该字符串由对象为实例的类的名称、符号符号符号“@”和对象哈希代码的无符号十六进制表示组成。换句话说,此方法返回一个字符串。

  因此,下次不要用错方法咯!

最新文章

  1. 在eclipse中把Tomcat 8删掉不能重建问题,启动Tomcat重置本地配置问题
  2. Oracle 分区表的新增、修改、删除、合并。普通表转分区表方法
  3. C#实现鸽巢排序
  4. android:shape
  5. lucene索引文件格式
  6. UIView的frame的扩展分类,轻松取出x、y、height、width等值
  7. 第二百六十六天 how can I 坚持
  8. Socket异步通信学习三
  9. js 去除字符串开头或者前几个字符。slice 也可以用于截取某一部分
  10. 【转】通过Navicat for MySQL远程连接的时候报错mysql 1130的解决方法
  11. list转换为map
  12. 蓝桥网试题 java 基础练习 数列特征
  13. Windows安装mysql-python提示:error: Microsoft Visual C++ 9.0 is required
  14. C#多线程中的异常处理
  15. java获取本机ip(排除虚拟机等一些ip)最终解,总算找到方法了
  16. Pandas透视表(pivot_table)详解
  17. 可远程定位、解锁并启动汽车的黑客设备OwnStar
  18. 根据C#编程经验思考编程核心
  19. leetcode第一刷_ Flatten Binary Tree to Linked List
  20. Java并发(零)教程目录

热门文章

  1. cmp的值到底是0还是1还是-1的问题
  2. Mysql索引引起的死锁
  3. JS 控制只能输入数字并且最多允许两位小数点
  4. lda topic number
  5. js MDN 查看
  6. Linux查看当前使用的网卡 以及 查看某进程使用的网络带宽情况 以及 端口占用的情况
  7. java中的方法method
  8. MySQL 必知必会学习笔记
  9. IOCP IO完成端口
  10. 阶段01Java基础day10面向对象05