为啥 "123".getBytes() 得到的字节数组和 hbase里Bytes.toBytes("123")得到的自己数组不一样啊

hadoop333 2014-10-28 10:15:34
为啥 "123".getBytes() 得到的字节数组和 hbase里Bytes.toBytes("123")得到的自己数组不一样啊
"123".getBytes() 为啥得到的是 [B@dc8569 而且值还在不停的变化啊
...全文
370 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuefeng0707 2014-10-28
  • 打赏
  • 举报
回复
你看到的 [B@dc8569其实是 "123".getBytes().toString()的结果,保存到数据库的是"123".getBytes(),这是一个真正的数组。
hadoop333 2014-10-28
  • 打赏
  • 举报
回复
引用 1 楼 xuefeng0707 的回复:
因为你用System.out.println("123".getBytes())打印出来的其实是调用了System.out.println("123".getBytes().toString()),数组对象的toString方法默认返回的就是这个格式:“[B”是说这是一个字节数组,后面的是这个数组在内存中的位置,每次执行的内存位置都不一样,自然就是每次都变得。
谢谢 那既然 "123".getBytes() 每次得到的数据都不一样 那为啥我们还把这个"123".getBytes()这个数据存到数据库里啊 这样且不是存到数据库里的数据不准吗
xuefeng0707 2014-10-28
  • 打赏
  • 举报
回复
因为你用System.out.println("123".getBytes())打印出来的其实是调用了System.out.println("123".getBytes().toString()),数组对象的toString方法默认返回的就是这个格式:“[B”是说这是一个字节数组,后面的是这个数组在内存中的位置,每次执行的内存位置都不一样,自然就是每次都变得。
xuefeng0707 2014-10-28
  • 打赏
  • 举报
回复
System.out.println(byte[]) 调用的其实是PrintStream.println(Object),这里面调用了String.valueOf(),这个方法里调用了toString()方法。
byte[] b = "123".getBytes();
		System.out.println(b);
		System.out.println(Arrays.toString(b));
hadoop333 2014-10-28
  • 打赏
  • 举报
回复
引用 3 楼 xuefeng0707 的回复:
你看到的 [B@dc8569其实是 "123".getBytes().toString()的结果,保存到数据库的是"123".getBytes(),这是一个真正的数组。
你好 谢谢解释 那怎么才能看"123".getBytes(),这是一个真正的数组 那怎么才能看这个正真的数组啥样的呢 为啥"123".getBytes() 打印出来的数据是 "123".getBytes().toString()这个结果啊

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧