您的位置:程序门 -> java -> j2se / 基础类



java怎么看指针地址


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


java怎么看指针地址
发表于:2007-01-05 22:40:01 楼主
c:
int   *p;
int   i;
p=&i;
printf( "%d ",p);


java呢?(就是那个“引用地址”)


发表于:2007-01-05 22:41:201楼 得分:0
看不了吧     虚拟机负责
发表于:2007-01-06 00:07:582楼 得分:0
object.tostring()
发表于:2007-01-06 00:23:363楼 得分:0
看了有啥用呀?
发表于:2007-01-06 01:12:094楼 得分:0
可以打印对象的哈希码
发表于:2007-01-06 06:17:015楼 得分:0
object类的
hashcode()
tostring()
发表于:2007-01-06 08:01:126楼 得分:0
学习
发表于:2007-01-06 08:19:247楼 得分:0
樓主,java里面應該是看不了的,因為java沒有了指針操作
发表于:2007-01-06 08:26:018楼 得分:0
这是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个对象是不是在同一个地址上     有没办法啊
发表于:2007-01-06 10:04:249楼 得分:0
==这个不行吗?
发表于:2007-01-06 10:27:3610楼 得分:0
==就可以了
发表于:2007-01-06 10:33:3011楼 得分:0
查看对象是否同一个内存地址直接==好了
发表于:2007-01-06 10:55:0712楼 得分:0
==不方便       一个在一个类里,另一个在另一个类里
发表于:2007-01-06 11:22:4413楼 得分:0
都用java了   还考虑社么指针问题~~返老还童啊-.-
发表于:2007-01-06 12:02:2114楼 得分:0
我要判断2个对象的地址是否一样     不用指针用什么
发表于:2007-01-06 12:16:1915楼 得分:0
那直接用   ==   就可以了
‘   ==   '   就是根据他们的地址是否相同进行判断的
发表于:2007-01-06 12:49:4616楼 得分:0
不知道楼主想要干什么?
发表于:2007-01-06 13:06:2217楼 得分:0
不知道楼主想要干什么?
----------------------------------------------------------------
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);  
    }  
}
发表于:2007-01-06 16:38:5918楼 得分:0
没人知道吗
发表于:2007-01-06 17:19:0919楼 得分:0
==比较的就是对象的地址。你不知道吗?
发表于:2007-01-06 17:25:0720楼 得分:0
和main的比,不可能为true把   ,应该怎么比都是false
发表于:2007-01-06 17:40:0921楼 得分:0
==比较的就是对象的地址。你不知道吗?
-----------------------------------
sb,   拜托看清楚代码再讲:

if   (str==   ???)       //这里我想跟main函数里的string   str做个==比较
发表于:2007-01-06 17:49:1022楼 得分:0
首先,你应当搞清楚的是,java里面的string是不可变的。就是说,当你在main里面把“aaa”赋值给str以后,再在changestr里面把“bbb”赋值给str,虚拟机就又隐式的创建了一个string,并把你的str引用连接到了新的string。原来的那个“aaa”就已经丢弃了,由jvm负责回收销毁。

然后,如果你想比较2个对象的地址,直接用==就完了。a==b,地址相等则是true,就这么简单。至于怎么看指针地址,我也不清楚tostring()出来的是不是,但是在java里面完全没必要,抛弃指针,不然你不如用c++。
发表于:2007-01-06 17:56:2123楼 得分:0
地址是看不到了。
判断两个引用类型的变量是否正引用着同一个对象用“==”即可。
发表于:2007-01-06 17:58:1724楼 得分:0
学java,就要学会用java语言来思考问题,如果只是想把java用作一个c++思想的表达工具,那可能会非常别扭,会搞得自己很糊涂。
发表于:2007-01-06 18:24:4525楼 得分:0
==比较的就是对象的地址。你不知道吗?
-----------------------------------
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语言指针是等价的,但是它是不可计算的指针,只能进行相等和不等比较,不能进行加减运算。另外在无法获得引用的物理内存地址,虽然它在内存有实际映象。
发表于:2007-01-06 18:25:1426楼 得分:0
> > sb,   拜托看清楚代码再讲:
> > if   (str==   ???)   //这里我想跟main函数里的string   str做个==比较

拜托你用脑子想清楚再讲。
不要总以sb的方式透露你对两种语言的无知。
发表于:2007-01-06 20:54:2027楼 得分:0
另外在无法获得引用的物理内存地址,虽然它在内存有实际映象。
---------------
这就够了     我不需要他的物理内存     实际上c的也是windows的虚拟内存映射      
我只是想看他究竟在内存里的映射地址    
public   static   void   changestr(string   str){
string   str2=str;
string   str= "bbb ";
if   (str==str2){

这个早就想过了,可是     总不能老这样加个临时的吧     怪别扭的
发表于:2007-01-06 21:16:5728楼 得分:0
要这么说的话,也只好说“c语言确实有它方便的地方。”
java中object类的hashcode方法一般情况下倒是可以保证让不同的对象返回不同的值,于是可以当个id性质的东西来用用,但那也只是一般的语言实现者的作法,并非java语言本身的硬性要求。
而且,object.hashcode是可以被重载的,所以即使object中那样做的,派生类中也仍然不一定。
发表于:2007-01-06 21:19:2229楼 得分:0
另外,在eclipse中调试java程序时,可以从variables窗口中观察对象的id。
(我用的是sun自己的jdk,不清楚其它厂商的实现是否也会让每个对象实际拥有一个id)
发表于:2007-01-07 09:22:1830楼 得分:0
于是可以当个id性质的东西来用用
------------------------
要是真的是id也可以    
                        for   (int   i   =   0;   i   <   len;   i++)   {
                                h   =   31*h   +   val[off++];
                        }
                        hash   =   h;

可是这个。。   这个连叫id的资格都米有
发表于:2007-01-07 10:44:3431楼 得分:0
对象的id并不是引用吧   ?
发表于:2007-01-08 00:19:3232楼 得分:0
呵呵,不是引用。
发表于:2007-01-08 13:19:1033楼 得分:0
直接打印对象,对于非基本型别打印的就是字符串形式的“对象地址”
你再“目测”一下俩字符串是不是一样即可
发表于:2007-01-08 13:24:0934楼 得分:0
哎,讨论就讨论贝,非得要辱骂对方!
就你们认为辱骂能解决问题是不?


快速检索

最新资讯
热门点击