java中不建议直接获取字符串内存地址,因为java不像c语言,获取内存地址是C语言的强项,java的弱项。但是java内存地址还是有一个应用场景,就是判断两个字符串内存地址是否相等来判断是否是同一个对象,用双等号“==”来比较的。参考代码如下:
public class Test01 {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
String str1="abc";
String str2=new String("abc");
System.out.println(str1 == str2);//输出false
}
}
对象可以用对象.toString()方法获取这个对象的伪地址,伪地址是由类名@hashCode算出来的一个数字没有什么实际的意义,所以java不用考虑内存的问题,这只是对对象的一个比较权威的标识而已,前提是这个类没有重写toString()方法,如果这儿类重写了toString方法,输出的就是重写之后的数值了。
获取对象的内存地址对java的开发是没有用处的,oracle公司对这条代码输出的地址String str = Object.toString();str==内存地址;;是包名+类名+哈希码,这里的哈希码是oracle公司进过复杂的算法转换的,所以一般在java程序中需要复写toSting(),equals(),hashcode()这三个方法。
Java不允许获得内存地址!
用ToString获得的只是其对象编号。
Java语言设计就是不允许直接管理内存。
若不重写对象的toString()
String str = Object.toString();
str==内存地址;