这是STRING的: public int hashCode() { int h = hash; if (h == 0) { int off = offset; char val[] = value; int len = count; for (int i = 0; i < len; i++) { h = 31*h + val[off++]; } hash = h; } return h; }这应该不是地址吧 我的目的是想看2个对象是不是在同一个地址上 有没办法啊
都用JAVA了 还考虑社么指针问题~~返老还童啊-.-
不知道楼主想要干什么? ---------------------------------------------------------------- public class StringTest { public static void changeStr(String str){ str="bbb"; if (str== ???) //这里我想跟main函数里的String str做个==比较,这句要怎么写?? 我只想干这个 System.out.println("=="); } public static void main(String[] args) { String str="aaa"; changeStr(str); System.out.println(str); } }
hashCode()
toString()
public int hashCode() {
int h = hash;
if (h == 0) {
int off = offset;
char val[] = value;
int len = count; for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;
}
return h;
}这应该不是地址吧 我的目的是想看2个对象是不是在同一个地址上 有没办法啊
----------------------------------------------------------------
public class StringTest {
public static void changeStr(String str){
str="bbb";
if (str== ???) //这里我想跟main函数里的String str做个==比较,这句要怎么写??
我只想干这个
System.out.println("==");
} public static void main(String[] args) {
String str="aaa";
changeStr(str);
System.out.println(str);
}
}
-----------------------------------
SB, 拜托看清楚代码再讲:if (str== ???) //这里我想跟main函数里的String str做个==比较
-----------------------------------
SB, 拜托看清楚代码再讲:if (str== ???) //这里我想跟main函数里的String str做个==比较
=============================================================
楼主,你基本的编程都不懂啊,你把被比较对象作为参数传进来,怎么比较?就是在C里面也是要这样啊,除非你用全局变量,你怎么不开窍呢?稍微转一下不就行了。
public class StringTest {
public static void changeStr(String str){
String str2=str;
String str="bbb";
if (str==str2){
System.out.println("==");
}
}
public static void main(String[] args) {
String str="aaa";
changeStr(str);
System.out.println(str);
}
}
还有,java里引用和c语言里面的指针概念是等价的。看来学你是刚学java吧,许多东西需要习惯的。java里面的引用虽然和c语言指针是等价的,但是它是不可计算的指针,只能进行相等和不等比较,不能进行加减运算。另外在无法获得引用的物理内存地址,虽然它在内存有实际映象。
>>if (str== ???) //这里我想跟main函数里的String str做个==比较拜托你用脑子想清楚再讲。
不要总以SB的方式透露你对两种语言的无知。
---------------
这就够了 我不需要他的物理内存 实际上C的也是windows的虚拟内存映射
我只是想看他究竟在内存里的映射地址
public static void changeStr(String str){
String str2=str;
String str="bbb";
if (str==str2){这个早就想过了,可是 总不能老这样加个临时的吧 怪别扭的
Java中Object类的hashCode方法一般情况下倒是可以保证让不同的对象返回不同的值,于是可以当个ID性质的东西来用用,但那也只是一般的语言实现者的作法,并非Java语言本身的硬性要求。
而且,Object.hashCode是可以被重载的,所以即使Object中那样做的,派生类中也仍然不一定。
(我用的是Sun自己的JDK,不清楚其它厂商的实现是否也会让每个对象实际拥有一个ID)
------------------------
要是真的是ID也可以
for (int i = 0; i < len; i++) {
h = 31*h + val[off++];
}
hash = h;可是这个。。 这个连叫ID的资格都米有