String str = "String";
byte[] byte1 = str.getBytes();
String str1 = new String(byte1);
byte[] byte2 = str1.getBytes();
----------
注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组
他们本身也是两个对象直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode()
[B表示byte数组
@表示之后的是地址
后面跟着的是hashCode,其实就是其虚拟机地址所以这个结果也就是顺理成章了
byte[] byte1 = str.getBytes();
String str1 = new String(byte1);
byte[] byte2 = str1.getBytes();
----------
注意byte1是str得到的byte数组,而byte2是另一个字符串str1得到的数组
他们本身也是两个对象直接打印实际上调用的是toString()方法,而toString()的默认实现是打印对象类型+hashCode()
[B表示byte数组
@表示之后的是地址
后面跟着的是hashCode,其实就是其虚拟机地址所以这个结果也就是顺理成章了
解决方案 »
- struts2 select 取值问题
- Hibernate关联问题
- struts2 Bean取值问题,在线等,谢谢。
- 求助:怎样找到不同手机的wap user agent?
- 关于WEBWORK中标签库的问题,拜托了
- struts ActionErrors问题?struts in action在哪有下载?
- elipse3.0下配置tomcat4.0.x的问题
- client能调用local接口吗?
- 关于Eclipse和easy struts的问题。
- 谈谈WSAD和JB,用过的随便发表些意见
- [请教]字符串压缩的问题:出错java.util.zip.ZipException: missing entry name
- JBX修改EJB Module后到Weblogic7中发布出现奇怪问题!
这与String.getBytes()方法的实现方式有关。
String.getBytes()里面每次都是调用了net byte[]重新构造了一个新的数组,所以,即使是对str1调用两次getBytes()方法,返回的数组都是不同的(不同的两个对象,地址不同)。当然数组的内容是相同的。
str1和str2其实是两个不同的对象
只是他们引用的是堆里的同一个常量
只是他们引用的是堆里的同一个对象。你说"String"这个字符串常量是不是对象?